在追踪twitter-stream的守护进程中,我有这样的结构:
client.track(*hashtags) do |status|
if status.coordinates != nil
EventMachine.synchrony
job = Qu.enqueue TweetProcessor, status
puts "Enqueued tweet processing #{job.id}"
end
end
end
对于问题库我正在使用qu-mongo我有这个配置
# /config/initializers/qu.rb
Qu.configure do |c|
c.connection = Mongo::Connection.new('127.0.0.1').db("appname_qu")
end
我尝试了很多选项,但总是以IOError: closed stream
生成。
答案 0 :(得分:0)
此问题与此question有关。有关详细信息,请阅读here。所以,在我的情况下,我只是在守护程序循环开始时将rails的记录器和qu的记录器重新分配给同一个文件,最后关闭它,一切正常:
client.track(*hashtags) do |status|
parser_logger = ActiveSupport::BufferedLogger.new( File.join(Rails.root, "log", "qu.log"))
Rails.logger = parser_logger
Qu.configure do |c|
c.connection = Mongo::Connection.new.db("appname_qu")
c.logger = parser_logger
end
job = Qu.enqueue TweetProcessor, status
Rails.logger.close
end