我花了几天时间在这上面,大约100个小时,但不能得到修复。
下面是我的设置(使用Rails 4.2.8)
class CustomJob < ActiveJob::Base
def perform(*args)
filename = args.first
data = File.read(filename)
# process that data
end
end
当我运行Delayed::Job.enqueue CustomJob.new('filename')
时,我得到了主题中提到的错误。作业已创建并添加到数据库,但错误消息为“作业失败...”
我有这样的台词:
require 'custom_job'
包括script/delayed_job.rb
、config/initializers/delayed_jobs.rb
、config/initializers/custom_job.rb
和我调用作业的文件。
我还补充了这一点:config.autoload_paths+=Dir[Rails.root.join('app','jobs')] config.active_job.queue_adapter = :delayed_job
到config/application.rb
文件
还有这个
config.threadsafe! unless defined? ($rails_rake_task) && $rails_rake_task
我也在每次更改后重新启动服务器。并使用以下命令验证delayed_job是否正在运行:
dir$ RAILS_ENV=development script/delayed_job status
delayed_job: running [pid 64503]
2条答案
按热度按时间xurqigkl1#
我总是觉得答案很明显...在我弄清楚之后。
问题是,我使用的是一个共享数据库,并且有现有的工人访问这个数据库。虽然我正在重新启动并刷新服务器的本地示例,但其他示例正在尝试运行我的作业,而导致错误的是OTHER worker,而不是我的本地示例。
解决方案:确保delayed_job的其他示例使用与您正在测试/构建/使用的代码相同的表。如果是这样,如果可能的话,使用另一个DB。
bqujaahr2#
你可以尝试把这一行添加到config/application.rb文件中吗