当前位置: 首页 > 知识库问答 >
问题:

如何在eventmachine中实现无限循环

壤驷德寿
2023-03-14

我需要在eventmachine上有一个无限循环,它不断地读取redis队列。下面是我的代码。递归是正确的方法吗?我尝试了loop doloop,但无法以那种方式工作。

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

共有1个答案

关翰
2023-03-14

最好订阅redis发布/子队列。https://gist.github.com/957367如果你真的需要一个循环,那么EM本身就是一个无限循环,你只需要用下一个勾号一次又一次地安排你的工作:

def read
  d = @redis.blpop 'queue', 0
  d.callback do |_, value|
    EM.next_tick { read }
  end.errback do |e|
    EM.next_tick { read }
  end
 end
 类似资料:
  • 我想实现一个无限循环数据集 如您所见,这里的主要挑战是方法。如果我在那里放一个足够大的数字,比如1 如果我在那里放一个小数字,比如1或BATCH_SIZE,训练循环中采样的“数据”将定期重复。这不是我想要的,因为我想产生新的数据 我猜过度使用内存的罪魁祸首是堆栈中的某个地方,缓存了一堆东西。随便看看Python的一面,我就不知道在哪里了。 有人能告诉我什么是实现我想要的最好的方法吗?(使用Data

  • 本文向大家介绍Android ViewPager实现无限循环的实例,包括了Android ViewPager实现无限循环的实例的使用技巧和注意事项,需要的朋友参考一下 Android ViewPager实现无限循环的实例 ViewPager自身并不支持左右无限循环的功能,这里就提供一种方案让Android ViewPager实现左右无限循环的功能,这里记录下: 用于显示的mViews,比数据源mL

  • 我试图设置一个自动压力测试,并将随机生成的数据输入Redis,然后让消费者(作为从Redis读取的另一个组件)处理随机数据。 为了模拟随机生成的数据尽可能接近真实世界的计时,我决定将其放入一个无限循环中,并使用EventMachine来处理同步。我不确定我在用EventMachine做什么,但我听说它比不断生成新线程并阻塞主进程要好得多。我这样做对吗? 编辑1 所以我最终用一个线程池来完成它

  • 我使用的是gem,尽管我认为我的问题比这更一般。我试图从EventMachine接收块外部发送数据,但要发送数据需要很长时间(~20秒): 当我把直接发送到方法中,效果很好。我不明白为什么我的版本不起作用。我在EventMachine中发现了这个问题,但我不确定它是否相关。 为什么要花这么长时间,我该怎么解决呢?

  • 本文向大家介绍Android ViewPager实现无限循环效果,包括了Android ViewPager实现无限循环效果的使用技巧和注意事项,需要的朋友参考一下 最近项目里有用到ViewPager来做广告运营位展示,看到现在很多APP的广告运营位都是无限循环的,所以就研究了一下这个功能的实现。 先看看效果 从一个方向上一直滑动,么有滑到尽头的感觉,具体是怎么实现的呢?看下面的思路。 实现思路 此

  • 问题内容: 尽管我知道问这个问题会有点愚蠢,但我仍然想查询有关它的技术观点的更多信息。 无限循环的简单示例: 如何从此类外部中断(停止)此无限循环(例如,在继承的帮助下)? 问题答案: 即使写这篇文章我也觉得很脏,但是… 从不同的线程,你可以调用一个实现,抛出一个当你调用。