我正在使用Resque来运行后台进程。这就是我的后台流程的工作原理:
这需要无限下去。
这就是我试图将Resque用于我的目的,这是我的工人类:
class ThumbnailMaker
@queue = :thumbnail_queue
def self.perform()
MyObj.check_thumbnails(root_url)
end
end
我理解perform()
方法将任务保存在队列中,该队列定期运行。在我的情况下,我需要一个扫描整个表的任务,因此它运行的时间更长。这是否符合我的要求?
另一方面,我需要Rails应用程序的根URL,这可以通过Rails Controller中的root_url
轻松获得。但我在我创建的课程中需要它,你能告诉我如何在这里得到它吗?
答案 0 :(得分:1)
Resque用于排队任务在后台运行;队列中的每个项目都运行一次然后被删除。你想要的更像是一个计划任务 - 例如,custom Rake task或其他不时运行的脚本;有很多scheduling gems可用于此类事情(wenever非常受欢迎)或只是使用cron。关于这个主题有一个great RailsCasts episode。
答案 1 :(得分:1)
您可能希望尝试将代码放在rake任务中并通过cron作业定期运行它。 Resque / Redis似乎对您的需求有点过分。
如果您通过控制器调用类,则可以考虑将根URL作为参数传递。否则,您可能希望将其设置为ENV设置并相应地配置每个部署。