【发布时间】:2014-11-04 23:53:12
【问题描述】:
当它被守护时,作业队列不会添加到延迟作业表中。但是,当它没有被守护时,这是有效的。
我有三个 rake 任务(a.rake、b.rake、c.rake)。
在 a.rake 中
task :run_a => :environment do
A.new.get_a_data
end
class A
def get_a_data
...
schedule_next_a_job
end
def schedule_next_a_job
get_a_data
end
handle_asynchronously :get_a_data, :run_at => Proc.new { 2.minutes.from_now }, :queue => 'a'
end
在 b.rake 中
task :run_b => :environment do
B.new.get_b_data
end
class B
def get_b_data
...
schedule_next_b_job
end
def schedule_next_b_job
get_b_data
end
handle_asynchronously :get_b_data, :run_at => Proc.new { 5.minutes.from_now }, :queue => 'b'
end
在 c.rake 中
namespace :run do
task :start do
`rake run_a`
`rake run_b`
if Rails.env == 'development'
`QUEUES=a,b rake jobs:work`
else
`RAILS_ENV=production bin/delayed_job --queues=a,b start`
end
task :stop do
`rake jobs:clear`
end
end
在控制台中,我运行如下:
RAILS_ENV=production rake run:start # to start jobs worker
rake run:stop # to clear my jobs worker
在我的延迟作业表中,last_error 显示为:
作业加载失败:未定义的类/模块 A
作业加载失败:未定义的类/模块 B
谁能帮我解决这个问题?
提前致谢。
【问题讨论】:
-
你看过这个Solution了吗??
-
@Gagan 是的。需要'my_custom_class'的作品!。谢谢
标签: ruby-on-rails ruby delayed-job