我有一个 resque 工作人员,它在运行 bash 命令后立即停止所有处理。这是我的工人:
class ProductJsonSaver
@queue = :products
def self.perform(id)
product = Product.find(id)
json = `phantomjs #{Rails.root}/lib/product_scrape.js`
product_json = JSON.parse(json)
p "Procesing is done"
p "Product JSON: #{product_json}"
product.update_attributes({:processed => true})
end
end
如果我跑
Resque.enqueue(ProductJsonSaver, 1)
我可以看到工作人员运行 bash 命令,我看到了 bash 命令的输出,但之后看不到打印语句,产品的已处理属性不会更新。resque-web 也没有将进程显示为失败。事实上,只需ProductJsonSaver.perform(1)
从 rails 控制台运行即可。
这是 Resque 的错误吗?
基本要素:Rails 3.2.11、OSX、ruby-1.9.3、resque 1.23.0
编辑代码使问题更清晰。