ruby – 如何在eventmachine中实现无限循环
发布时间:2020-12-17 02:19:58 所属栏目:百科 来源:网络整理
导读:我需要在eventmachine之上有一个无限循环,它不断读取redis队列.下面是我的代码.递归是正确的方法吗?我试过循环do循环,但无法让它以这种方式工作. require 'em-hiredis'def read d = @redis.blpop 'queue',0 d.callback do |_,value| p value read end.errba
我需要在eventmachine之上有一个无限循环,它不断读取redis队列.下面是我的代码.递归是正确的方法吗?我试过循环do循环,但无法让它以这种方式工作.
require 'em-hiredis' def read d = @redis.blpop 'queue',0 d.callback do |_,value| p value read end.errback do |e| p e EM.next_tick { read } end end EM.run do @redis = EM::Hiredis.connect read end 解决方法
最好订阅redis pub / sub队列.
https://gist.github.com/957367 如果你真的需要一个循环,那么EM本身就是一个无限循环,你只需要使用next_tick一次又一次地安排你的工作: def read d = @redis.blpop 'queue',value| EM.next_tick { read } end.errback do |e| EM.next_tick { read } end end (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |