【问题标题】:CRON job every 10 minutes on Amazon EC2在 Amazon EC2 上每 10 分钟执行一次 CRON 作业
【发布时间】:2013-11-21 16:59:33
【问题描述】:

我正在开发一个 Rails 应用程序,那里有很多文章。 每篇文章都可以随时发布 - 文章的作者可以选择想要发表文章的小时和分钟 (00, 10, 20, 30, 40, 50)。

是什么让我在这里担心 - 如何在这里设置 CRON?我使用 Delayed jobs gem 发表文章。我知道我可以将 CRON 设置为每 10 分钟运行一次,但假设有 10 篇文章应该在 11:20 PM 发布 - 可以 - 或者将 CRON 处理所有这 10 篇文章,Delayed Jobs 会发表文章吗?

因为处理这些任务只有 10 分钟(因为 CRON 将在每 00、10、20、30、40 和 50 分钟运行一次)- 这足够吗?

【问题讨论】:

  • crontab -e 转到文件末尾并输入您的命令

标签: ruby-on-rails ruby amazon-web-services amazon-ec2 cron


【解决方案1】:

使用Delayed::Job的run_at选项,不需要cron

在文章更新/创建并指定其 publish_at 日期时间时将作业排队

job = PublishArticleJob.new(article.id)
Delayed::Job.enqueue(job, run_at: article.publish_at)

请注意您是如何处理时区的,如果我以“太平洋”时间用户的身份发布文章,我可能希望我的文章当时会在“太平洋”发布?

如果用户可以在运行前更新 publish_at 时间,您需要删除现有作业或更新 run_at,有关如何执行此操作的更多信息,请参阅 How to cancel scheduled job with delayed_job in Rails?

上面假设你的工作看起来像

class PublishArticleJob < Struct.new(article_id)
  def perform
    article = Article.find(article_id)
    # code to do the publishing
  end
end

【讨论】:

    猜你喜欢
    • 2017-10-15
    • 2010-12-22
    • 2021-12-18
    • 2015-03-08
    • 2013-11-27
    • 2015-07-29
    • 2022-07-07
    • 2020-07-01
    • 1970-01-01
    相关资源
    最近更新 更多