我使用resque來完成一些(很長時間)的工作。而且我有幾個課程使用相同的混合模塊進行排隊。 Class Service替代了測試,這就是它獨立和(可能太多)複雜的原因。這樣的故事是,當我直接打電話Resque啓動作業,但什麼都不做
Campaign.perform(user_id)
,一切正常,但是當我嘗試使用隊列:創建
Resque.enqueue(Campaign, user_id)
工作,但好像什麼都不做。至少,沒有任何東西保存到數據庫中。這是Campaign類的主要任務。我可以在resque-web-interface中看到作業創建並完成,並完成(幾乎在創建之後加快),但沒有結果。
我在Resque新的和真的不知道它會調用一切(困惑如何調試它)。
是否有人有類似的問題?謝謝你的幫助。
模塊:
module Synchronisable
def self.included(base)
base.extend ClassMethods
end
module ClassMethods
def perform(user_id)
save_objects("#{self.name}::Service".constantize.get_objects(user_id))
end
protected
def save_objects(objects)
raise ArgumentError "should be implemented"
end
end
class Service
def self.get_objects(user)
raise ArgumentError "should be implemented"
end
end
end
其中一個類:
class Campaign < ActiveRecord::Base
include Synchronisable
@queue = :app
class << self
protected
def save_objects(objects)
#some stuff to save objects
end
end
class Service
def self.get_objects(user_id)
#some stuff to get objects
end
end
end
我有同樣的問題。喬布斯會入隊,但不會跑多數時間。偶爾它實際上有效。 –