【发布时间】:2017-11-01 21:06:07
【问题描述】:
我正在使用 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
【问题讨论】:
-
我也有同样的问题。作业进入队列,但大多数时候不运行。偶尔它确实有效。
标签: ruby-on-rails ruby queue resque