我花了大约 3 个小时试图让一个简单delayed_job
的执行没有成功。我有这个非常简单的工作:
class Foo
def foo
`echo foo >> /tmp/mrsmee`
end
end
我将它排入 Rails 操作中,如下所示:
Foo.new.delay.foo()
我正在像这样运行作业处理器:
$ script/delayed_job run
我看到一堆这样的输出日志,
2013-05-13T15:21:12-0700: [Worker(delayed_job host:asha.local pid:73263)] 1 jobs processed at 35.6405 j/s, 0 failed ...
和这样的条目delayed_backend_mongoid_jobs
,
{ "_id" : ObjectId("51916452005056107900001a"), "priority" : 0, "attempts" : 0, "queue" : null, "handler" : "--- !ruby/object:Delayed::PerformableMethod\nobject: !ruby/object:Foo {}\nmethod_name: :foo\nargs: []\n", "run_at" : ISODate("2013-05-13T22:08:18.560Z"), "updated_at" : ISODate("2013-05-13T22:08:18.560Z"), "created_at" : ISODate("2013-05-13T22:08:18.560Z") }
很明显,这些作业正在入队、处理和出队。太糟糕了,测试输出文件,/tmp/mrsmee
永远不会写入任何内容。我完全不知所措。为什么delayed_job
实际上没有运行延迟的作业,或者至少告诉我是什么阻止了它这样做?