コントローラでは、ActiveJobを起動した認証済みのユーザーによる投稿要求があります。ActiveJobsを使用したDelayed_Jobでのキューイング
RunReportsJob.perform_later(param1, param2, param3)
エラーなく動作します。しかし、すでに実行中のRunReportsJobをトリガするためにユーザがボタン(発砲ポスト要求)を再度押すと、2つのジョブが同時に発生します。私はそれがキューイングサービスだと思って、一度にすべてのことを1つの仕事にとどめていたので、delayed_jobをセットアップしました。しかし、これは起こっていない。以下は私の設定です:
# app/jobs/run_reports_job.rb:
class RunReportsJob < ActiveJob::Base
queue_as :RunReports
include ShopifyApp::Controller
# --------------------------------------------------------------
# JOB ERROR MANAGEMENT
# --------------------------------------------------------------
rescue_from(ActiveRecord::RecordNotFound) do |exception|
# Do something with the exception
logger.debug "Hit rescue_from"
end
# --------------------------------------------------------------
# JOB FUNCTION
# --------------------------------------------------------------
def perform(param1, param2, param3)
# some code is performed here
end
end
:
config.active_job.queue_adapter = :delayed_job
# config/initializers/delayed_job_config.rb
:
Delayed::Worker.max_attempts = 1
Delayed::Worker.max_run_time = 12.hours
でドキュメントをチェックすべてのジョブを保存するためのテーブルを使用しています2番目のジョブは、1番目以降の待ち行列にジョブを呼び出す。キューに既に何かがある場合は、ここに示したコードは何もしません。 –
これは私が探しているものでしょうか?: 'Delayed :: Worker.read_ahead = 1'。デフォルト値が5の場合、delayed_jobはデータベースの最後の5つを同時に実行しようとしますか? –
オハイオ州、私はそれを今すぐ取得することができますこれは優先順位を使用して達成することができます、私は答えコード – neydroid