亚马逊EC2每10分钟CRON一次

时间:2013-11-09 17:54:25

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

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

让我担心的是什么 - 如何在这里设置CRON?我发布了带有延迟作业 gem的文章。我知道我可以将CRON设置为每10分钟运行一次,但是假设有10篇文章应该在 11:20 PM发布 - 可以 - 或者CRON流程会全部发布这10篇文章是否会有延迟工作

发表的文章

因为处理这些任务只需要10分钟(因为CRON将在每隔00,10,20,30,40和50分钟运行一次) - 是否足够时间?

1 个答案:

答案 0 :(得分:0)

使用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