我的初始化器/task_Scheduler.rb
require 'rubygems'
require 'rufus/scheduler'
scheduler = Rufus::Scheduler.start_new
scheduler.cron '*/5 * * * *' do
Project.cron_for_report
end我的问题是我每5分钟就会收到12封报告。我应该每5分钟才能收到一封邮件。我应该使用像互斥量这样的东西吗??请给出一些示例代码。
请帮帮忙。
提前谢谢。
发布于 2013-06-15 06:31:39
这听起来不像是rufus调度器的问题,它听起来像是你在运行12个Rails进程,但是你不知道你在运行Rails的是什么(Unicorn,Passenger,... ?)。
因为你在Ubuntu上运行,所以你可以自由地使用crond。你为什么不看看https://github.com/javan/whenever呢?它将允许您从Rails应用程序中利用crond的优势。
rufus调度器很有趣,但是如果您只是在每次启动Rails时启动它,那么您最终将为每个Rails进程创建一个rufus调度器实例,除非您在初始化器中放置一些逻辑来避免这种情况(锁定文件等)。您的逻辑必须足够智能,以避免锁指向失效的调度器,从而阻止启动新的、需要的、调度器等。
由于您部署在Linode/Ubuntu上,因此您可以自由考虑其他替代方案,如consider。
对不起,没有示例代码,我不想让你成为一个复制-粘贴程序员。
https://stackoverflow.com/questions/17103752
复制相似问题