【发布时间】:2011-09-29 21:22:29
【问题描述】:
延迟的工作似乎不适合我,因为它会延迟工作。我想在我的 Rails 应用程序上每 5 分钟开始一次工作。这在 Heroku 上可行吗?
谢谢。
【问题讨论】:
标签: ruby-on-rails batch-file cron heroku
延迟的工作似乎不适合我,因为它会延迟工作。我想在我的 Rails 应用程序上每 5 分钟开始一次工作。这在 Heroku 上可行吗?
谢谢。
【问题讨论】:
标签: ruby-on-rails batch-file cron heroku
我建议结合他们的Free Daily Cron 和上面提到的DelayedJob 调度。每天一次,启动所有延迟的工作任务(如果你间隔 5 分钟,你需要 288 个工作)以度过一天,并相应地安排它们。
编辑:您实际上并不需要上述模块。从this 博文中,您可以执行以下操作
Delayed::Job.enqueue PollTwitter.new(), 0, 1.minutes.from_now.getutc
这会在 DelayedJob 中设置 run_at 标志。显然,这就是作业将运行的时间。
【讨论】:
在this blog post 中,您可以找到一个模块来在DelayedJob 上添加一些调度。
module Jobs
module ScheduledJob
def self.included(base)
base.extend(ClassMethods)
end
def perform_with_schedule
Delayed::Job.enqueue self, 0, self.class.schedule.from_now.getutc
perform_without_schedule
end
module ClassMethods
def method_added(name)
if name.to_s == "perform" && !@redefined
@redefined = true
alias_method_chain :perform, :schedule
end
end
def schedule
@schedule
end
def run_every(time)
@schedule = time
end
end
end
end
我在我的一个项目中使用它,工作正常!
【讨论】: