我有一个抓取网站的Ruby脚本,需要40分钟。我想做的是将结果转储到数据库中,并能够对数据进行常规ActiveRecord
内容。
编辑1:
另一个问题是,如果我将这个特定的Ruby脚本放在我的/lib
目录中,我该如何让它与数据库进行交互?我通常从模型和控制器与DB交互。如何在运行后将结果存储在我的数据库中?
答案 0 :(得分:6)
我会尝试给你一些直截了当的答案。
A)你很可能将它作为后台工作。有一些体面的宝石。考虑https://github.com/defunkt/resque或更轻量级的内容,例如https://github.com/tobi/delayed_job。
B)rake任务就足够了,然后用任何一个提到的库运行它。另一种选择是cron工作。
C)你应该把它放在lib /目录中。
D)您应始终提供某种处理日志,以便跟踪潜在的错误。如果您选择上述两个库中的任何一个,请务必正确阅读说明。
答案 1 :(得分:1)
答案 2 :(得分:1)
最简单的方法是将作业设置为rake任务。然后从命令行测试rake任务以确保它正常工作。
最后,将rake任务作为cronjob添加到您的服务器上,然后通过电子邮件发送生成的日志。
对于我的应用程序,我有一个“夜间”rake任务,可以处理几个子任务。它执行各种清理任务,运行夜间报告等。
作业处理系统,例如延迟作业,对于每天一次的类型任务来说可能是过度的。我的应用程序也使用延迟作业,但是对于许多客户端全天发起的任务。
请记住,您还需要一个进程来观察延迟作业过程(并在必要时重新启动它)。我使用runit,还有其他选择。
答案 3 :(得分:1)
使用whenever gem执行cron作业。