0

私は多くの記事があるRailsアプリケーションに取り組んでいます。すべての記事はいつでも公開できます。記事の作成者は、記事を公開する時間と分 (00、10、20、30、40、50) を選択できます。

ここで何が心配なのですか - ここで CRON を設定する方法は? Delayed jobs gemを使用して記事を公開しています。CRON を 10 分ごとに実行するように設定できることはわかっていますが、午後 11 時 20 分に公開する必要がある記事が 10 件あるとしましょう。Delayed Jobsによって公開されますか?

これらのタスクの処理には 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 でdelayed_job を使用してスケジュールされたジョブをキャンセルする方法」を参照してください。その方法の詳細については

上記は、あなたの仕事が次のように見えることを前提としています

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 に答える