I enthalten delayed_job -gem in mein Projekt:Warum perform-method funktioniert, aber andere Ereignisse von delayed_job werden nicht aufgerufen?
# Gemfile
gem 'daemons'
gem 'delayed_job_active_record'
# bash
bundle
rails generate delayed_job:active_record
rake db:migrate
rails g job MyFirstDelayedJob
und bearbeitet app/jobs/my_first_delayed_job_job.rb
-Datei wie folgt:
class MyFirstDelayedJobJob < ApplicationJob
queue_as :default
def perform(*args)
JOB_LOGGER.info "perform() happened with args: #{args.inspect}"
end
def success(job)
JOB_LOGGER.info "success() happened. Job object: #{job.inspect}"
end
def error(job, ex)
JOB_LOGGER.info "error() happened. Job object: #{job.inspect}, Exception: #{ex.message}"
end
def failure(job)
JOB_LOGGER.info "failure() happened. Job object: #{job.inspect}"
end
end
delayed_job Arbeiter von Schienen Konsole gestartet Debug-Protokolle, um zu sehen:
Delayed::Worker.new.start
Rake-Aufgabe erstellt:
# lib/tasks/run_my_first_delayed_job.rake
desc 'Run job'
task my_first_delayed_job_job: :environment do
JOB_LOGGER.info 'run_my_first_delayed_job.rake: Starting delayed job...'
MyFirstDelayedJobJob.set(wait: 30.seconds).perform_later 'arg1', 'arg2', 333
JOB_LOGGER.info 'run_my_first_delayed_job.rake: Finished.'
end
Und in der Schale ausgeführt: rake my_first_delayed_job_job
Nach Rake-Task ausgeführt, ich habe diese Protokolle:
# log/job.log
I, [2017-12-01T19:18:14.591918 #11664] INFO -- : run_my_first_delayed_job.rake: Starting delayed job...
I, [2017-12-01T19:18:14.655178 #11664] INFO -- : run_my_first_delayed_job.rake: Finished.
I, [2017-12-01T19:18:44.785494 #11591] INFO -- : perform() happened with args: ["arg1", "arg2", 333]
Warum success
, error
, failure
Rückrufe nicht aufgerufen?
es funktioniert wie ein Charme! –