Ruby 处理数千个异步请求的最佳方式?

标签 ruby asynchronous eventmachine celluloid

任务是几乎实时地处理报价单(延迟 1 秒)。

目前我需要处理大约一百个报价,但它可能会增加到数千个。我正在查看当前运行 10 个线程的 EM,每个线程将运行 10 个异步请求并将数据放入某个 PubSub 以供以后处理。

此外,我正在使用 HTTP gem 测试 Celluloid-IO

我走的路对吗?尝试在 GitHub 上查看我正在尝试实现但失败的 smth。

最佳答案

如果有大量并行请求,有时建议使用 Fibers而不是线程,因为它们触发速度更快,内存使用量更轻。

最受欢迎的解决方案是 EM-synchrony您可以使用 EM::Synchrony::Iterator 进行作业调度和平衡。

请注意,您应该使用符合 EM 的库,例如“em-synchrony/em-http”,以与 EM-synchrony 兼容.

可以查看this博文以获得更多见解。

关于Ruby 处理数千个异步请求的最佳方式?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17735160/

相关文章:

ruby-on-rails - 这两个 'belongs_to' 语句之间有什么区别吗

asynchronous - 如何中断循环中的等待

ruby - 规范测试基于 EventMachine 的(Reactor)代码

asp.net - 为什么 Time.strptime() 返回当前日期?

jquery - Rails 如何创建 ajax 星级

ruby-on-rails - Basic Nested Routes(如何同时拥有嵌套路由和非嵌套路由)

javascript - Nodejs延迟返回 "require"

c# - 如何停止等待任务但让任务在后台运行?

ruby 纤维和 faye

sockets - 如何以最少的停机时间切换 TCP 监听套接字?