在linode ubuntu中用于cron作业的Rufus-Scheduler问题

时间:2013-06-14 07:58:06

标签: ruby-on-rails-3 cron linode rufus-scheduler

我的初始值设定项/ 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分钟只收一封邮件。我应该使用像互斥锁这样的东西吗?请举一些示例代码。

请帮忙。

提前致谢。

1 个答案:

答案 0 :(得分:1)

它听起来不像是一个rufus-scheduler问题,听起来你正在运行12个Rails进程,但你不知道你在运行Rails(Unicorn,Passenger,......?)。

由于你在Ubuntu上运行,你可以自由使用crond。你为什么不看看https://github.com/javan/whenever?它可以让你从Rails应用程序中利用crond的优势。

Rufus-scheduler很有趣,但是如果你只是在每次Rails启动时启动它,你将最终为每个Rails进程设置一个rufus-scheduler实例,除非你在初始化器中放置一些逻辑以避免这种情况(锁文件等)。而且你的逻辑必须足够智能,以避免指向死调度程序的锁定,从而阻止启动新的,需要的调度程序等。

由于你在Linode / Ubuntu上部署,你可以自由地考虑其他选择,比如Whenever。

抱歉,没有示例代码,我不希望您成为复制粘贴程序员。