В контроллере у меня есть почтовый запрос от аутентифицированного пользователя, запускающего ActiveJob.
RunReportsJob.perform_later(param1, param2, param3)
Работает без ошибок. Но если пользователь снова нажимает кнопку (запрос отправки сообщения), чтобы запустить RunReportsJob, когда он уже запущен, одновременно выполняются 2 задания. Я установил 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/application.rb
:
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