为什么 Delayed Job 错误回调不执行?
Why won't the Delayed Job error callback execute?
我正在尝试按照 this guide 处理延迟作业的 API 速率限制。
这是我的工作:
# app/jobs/mailer_job.rb
class MailerJob < Struct.new(:custom_id)
def perform
# Intentionally throw an error to test error callback
raise StandardError
end
def error(job, exception)
puts 'Error!'
end
end
这是我安装的可能相关的 gem。我正在使用 Ruby 1.9.3.
gem 'rails', '3.0.20'
gem 'passenger', '5.0.21'
gem 'delayed_job_active_record', '4.1.1'
gem 'delayed_job', '4.1.2'
gem 'foreman', '0.83.0'
我在延迟作业日志中看到以下内容:
[Worker(host:ubuntu pid:9912)] Starting job worker
[Worker(host:ubuntu pid:9912)] Job MailerJob (id=1720) RUNNING
[Worker(host:ubuntu pid:9912)] Job MailerJob (id=1720) FAILED (0 prior attempts) with StandardError: StandardError
[Worker(host:ubuntu pid:9912)] 1 jobs processed at 12.9574 j/s, 1 failed
我从未见过错误回调发生。但是,如果我使用 CTRL+C 终止 rails 服务器,它会立即打印错误回调 puts
语句。
为什么当服务器 运行 时自定义延迟作业的错误回调不执行?
错误回调很可能工作正常。大多数操作系统的标准输出都是缓冲的。所以我很确定在服务器关闭之前一直在缓冲字符串,这会刷新缓冲区。
尝试STDERR.puts
。在大多数操作系统上,标准错误不会被缓冲。
我正在尝试按照 this guide 处理延迟作业的 API 速率限制。
这是我的工作:
# app/jobs/mailer_job.rb
class MailerJob < Struct.new(:custom_id)
def perform
# Intentionally throw an error to test error callback
raise StandardError
end
def error(job, exception)
puts 'Error!'
end
end
这是我安装的可能相关的 gem。我正在使用 Ruby 1.9.3.
gem 'rails', '3.0.20'
gem 'passenger', '5.0.21'
gem 'delayed_job_active_record', '4.1.1'
gem 'delayed_job', '4.1.2'
gem 'foreman', '0.83.0'
我在延迟作业日志中看到以下内容:
[Worker(host:ubuntu pid:9912)] Starting job worker
[Worker(host:ubuntu pid:9912)] Job MailerJob (id=1720) RUNNING
[Worker(host:ubuntu pid:9912)] Job MailerJob (id=1720) FAILED (0 prior attempts) with StandardError: StandardError
[Worker(host:ubuntu pid:9912)] 1 jobs processed at 12.9574 j/s, 1 failed
我从未见过错误回调发生。但是,如果我使用 CTRL+C 终止 rails 服务器,它会立即打印错误回调 puts
语句。
为什么当服务器 运行 时自定义延迟作业的错误回调不执行?
错误回调很可能工作正常。大多数操作系统的标准输出都是缓冲的。所以我很确定在服务器关闭之前一直在缓冲字符串,这会刷新缓冲区。
尝试STDERR.puts
。在大多数操作系统上,标准错误不会被缓冲。