我一直在努力寻找处理异步请求和组织需要重复的工作的好方法,而eventmachine似乎是一个很好的方法,但我发现一些帖子试图阻止用户使用eventmachine(例如https://github.com/kyledrake/sinatra-synchrony)。我想知道他们指的是什么问题? (如果某人足够好,那么替代品是什么?)
答案 0 :(得分:1)
考虑到您基本上是在寻找工作队列,请查看Background Jobs at Ruby Toolbox,您会发现许多不错的选择。可管理性与速度相似,
我不鼓励你使用EventMachine,因为:
实际上,Sinatra Synchrony的人总结得很好:
这个gem不应该被考虑用于新的应用程序。这个比较好 使用Ruby而不是EventMachine的线程。它也倾向于 当新版本的红宝石出现时,它就会中断,而EM本身则不会 保持得很好,并有一些非常基本的问题。
我不会再维护这个宝石了。如果有人有兴趣 保持它,随时查询,但我建议不要使用 EventMachine或sinatra-synchrony了。
答案 1 :(得分:0)
如果适合您的工作流程,请使用EM。只要你不太疯狂,回调就可以了。我在上一份工作中在EM之上构建了很多软件。
对第三方协议有很好的支持,只需看看the protocol implementations page。
至于阻止反应堆,你只需要确保你不在主线程上工作,如果你这样做,确保你的工作快速。您可以采取一些措施来确定这是否有效。最简单的方法是在代码中添加延迟检查。它就像为每x秒添加一个周期性计时器并记录消息(在开发中)一样简单。打印出呼叫之间的时间将告诉您反应堆的滞后程度。这个时间越大你的x值就越多你在主线程上做的工作。
所以,我会说,亲自尝试一下。尝试赛璐珞,尝试直线,尝试用EM-Synchrony和纤维进行EM。
这真的取决于个人偏好。