簡體   English   中英

Rails / delayed_job只是……不起作用

[英]Rails/delayed_job just… not working

我花了大約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 ,測試輸出文件/tmp/mrsmee從未寫入任何內容。 我完全不知所措。 為什么delayed_job實際上沒有運行延遲的工作,或者至少告訴我是什么阻止了延遲的工作呢?

可能有點晚了,但是:

問題不在於DelayedJob,而在於您的方法。 DelayedJob正在執行Foo.new.foo。

如果您嘗試這樣做:

class Foo
  def foo
    puts "hey!, the job is being executed!"
  end
end

並且您在DelayedJob的輸出日志中看到該字符串,則delayJob正常工作

您是否檢查過Rails(DelayedJob)有權在/ tmp文件夾中寫入?

此代碼也可能有幫助(已創建test.txt並將其寫入您的應用文件夾中):

class Foo
  def foo
    `echo foo >> #{Rails.root.join "test.txt"}` #remember to delete test.txt!
  end
end

如果這可行,即創建了test.txt文件且其內容為foo,則問題應該出在具有權限的地方,因此sudo script/delayed_job run可能會有所幫助

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM