0

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

是什么让我在这里担心 - 如何在这里设置 CRON?我使用延迟工作gem 发布文章。我知道我可以将 CRON 设置为每 10 分钟运行一次,但是假设有 10 篇文章应该在晚上 11:20发布- 可以 - 或者 CRON 是否会处理所有这 10 篇文章并且会有文章由延迟作业发布?

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

4

1 回答 1

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,请参阅如何在 Rails 中使用延迟作业取消计划作业?有关如何执行此操作的更多信息

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

class PublishArticleJob < Struct.new(article_id)
  def perform
    article = Article.find(article_id)
    # code to do the publishing
  end
end
于 2013-11-09T18:01:49.210 回答