问题标签 [eventmachine]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
3377 浏览

ruby - 在基于 EventMachine 的应用程序中读取文件的最佳方式是什么?

为了不阻塞反应器,我想异步读取文件,但我没有发现使用 EventMachine 的明显方法。我尝试了几种不同的方法,但没有一种感觉是对的:

  • 只是读取文件,它会阻塞反应器,但到底是什么,它并没有那么慢(除非它是一个大文件,然后它肯定是)。
  • 打开文件进行读取并在每个刻度上读取一个块(但是要读取多少?太多会阻塞反应器,太少并且读取会比必要的慢)。
  • EM.popen('cat some/file', FileReader)感觉真的很奇怪,但比上面的替代品效果更好。结合LineAndTextProtocol它,它可以非常迅速地读取行。
  • EM.attach,但我还没有找到任何如何使用它的示例,我在邮件列表中发现的唯一内容是它已被弃用,取而代之的是......</li>
  • EM.watch,我没有找到如何用于读取文件的示例。

您如何在 EventMachine 反应器循环中读取文件?

0 投票
3 回答
4411 浏览

twisted - Ruby EventMachine、Python Twisted 或 JavaScript Node.js 的意义/目的是什么?

我不明白这些框架解决了什么问题。它们是 Apache HTTPD、Tomcat、Mongrel 等 HTTP 服务器的替代品吗?或者他们更多?我为什么要使用它们……一些真实世界的例子?我见过无数的聊天室和广播服务的例子,但看不出这与例如设置一个 Java 程序来打开套接字并为每个请求分派一个线程有什么不同。

我想我了解非阻塞 I/O,但我不明白这与多线程 Web 服务器有何不同。对于 Node.js,我读到它只有一个线程,这可能比同时处理多个线程更有效,但这是这些框架和传统 Web 服务器之间的唯一区别吗?

0 投票
5 回答
15964 浏览

ruby - Sinatra 与 EventMachine WebSockets 一起工作是否成功?

我已经使用 Sinatra 有一段时间了,我想通过 websockets 推送数据来为我的 web 应用程序添加一些实时功能。

我已经成功地单独使用了 gem 'em-websocket',但无法编写一个具有 sinatra web 服务器和 web-socket 服务器的 ruby​​ 文件。

我试过旋转跑步!或开始!方法在单独的线程中关闭,但没有成功。

有没有人让这个工作?

我想将它们放在同一个文件中,然后我可以在两台服务器之间共享变量。

谢谢!

0 投票
4 回答
5633 浏览

ruby - 为什么 EventMachine 的延迟比 Ruby 线程慢?

我有两个使用 Mechanize 获取 Google 索引页面的脚本。我认为 EventMachine 会比 Ruby 线程快,但事实并非如此。

EventMachine 代码成本: "0.24s user 0.08s system 2% cpu 12.682 total"

Ruby 线程代码成本: "0.22s user 0.08s system 5% cpu 5.167 total "

我是否以错误的方式使用 EventMachine?

事件机:

红宝石线程:

0 投票
0 回答
1108 浏览

asynchronous - 获取异步 http 请求以在 rails 3beta4/ruby 1.9.2-rc2/thin/eventmachine 上工作

我一直在尝试让基本的异步 HTTP 调用在我的应用程序中工作。

我已经尝试在我的应用程序中使用 Rails 3 异步堆栈演示中的一些代码:http: //github.com/igrigorik/async-rails,但我得到“无法从根光纤产生”并且我没有想法从这里去哪里。这是我的跟踪的顶部:

我的索引控制器方法很简单:

我有所有正确的宝石,我有 1.9.2-rc2,rails 3 beta 4,而且我运行得很瘦。我还让 async-rails 应用程序本身使用相同的 rvm 和 gemset 运行良好。eventmachine 反应器肯定在我的应用程序中运行。我很想知道如何让它正常工作的任何提示!

0 投票
1 回答
2347 浏览

ruby - Working examples of EM::Iterator

Does anyone have any working examples of EM::Iterator? The only examples I can find seem to be copies of (or point back to):

http://yardoc.org/docs/eventmachine-eventmachine/EventMachine/Iterator

I don't see any instances of EM::Iterator in EventMachine's Rdoc, so I'm not sure if it's an old class that has been removed or not. I generally get the following error when I try to use EM::Iterator:

NameError: uninitialized constant EventMachine::Iterator

Thanks!

0 投票
3 回答
610 浏览

ruby - 需要一个 ruby​​ 解决方案来在单独的进程中执行方法

我正在实现一个轮询服务,其界面如下所示。

start方法应该不断地开始点击 http 请求并更新数据库中的内容。一旦started,该过程应该继续,直到它被明确地stoped。

我了解实现start需要在新进程中生成和运行。我不太确定如何在 Ruby 中实现这一点。我想要一个 ruby​​ 解决方案,而不是一个特定于 ruby​​ 框架的解决方案(不是 rails 插件或 sinatra 扩展。只是 ruby​​ gems)。我正在探索 eventmachine 和 starling-workling。我发现 eventmachine 太大而无法在短时间内理解,并且工作是一个插件而不是一个 gem。所以让它为 Ruby 应用程序工作是一件痛苦的事情。

我需要有关如何实现这一目标的指导。任何指针?代码示例会有所帮助。

编辑

Eventmachine 或 starling-workling 解决方案将优于线程/分叉。

0 投票
2 回答
702 浏览

ruby - 用于实时/并行 HTTP 爬虫的好库/平台?

我正在构建一个爬虫,它可以从多个网站实时并行获取信息,以响应客户端对这些信息的请求。我需要从 10-20 个网站请求特定页面,解析它们的内容以获取特定的信息片段,并尽快将这些信息返回给客户端。我想异步执行此操作,因此客户端在准备好后立即显示第一个结果,而其他请求仍处于待处理状态。

我有 Ruby 背景,因此更愿意在 Ruby 中构建解决方案 - 然而,并行性和速度正是 Ruby 所不擅长的。我相信诸如EventMachineTyphoeus 之类的库可以解决这个问题,但我也在强烈考虑node.js,因为我非常了解 javascript 并且似乎是为这种事情而构建的。

无论我选择什么,我还需要一种有效的方式将结果传达给客户。我正在考虑普通的 AJAX(但这需要轮询服务器)、Web 套接字(但这需要对旧版浏览器进行回退)和用于持久客户端/服务器通信的特定解决方案,例如CrampJuggernautPusher

有没有人想分享任何经验和/或建议?

0 投票
2 回答
15343 浏览

ruby-on-rails - EventMachine 和 Rails 是如何集成的?

我发现很多文章向我展示了 EventMachine 是什么以及如何设置无休止的“Hello World!”。示例,但我仍然不知道它如何与我的 Rails 应用程序集成。

例如,我有一个现有的 Rails 应用程序,它有许多并发用户,他们可能同时在我的数据库中编辑同一行。我在想我会允许两个(或更多)不同的人加载记录,但如果记录已更新,请通知这些用户,并强制后者用户在将其保存回数据库之前协调任何冲突的更改。我在想我可以在客户端使用 Javascript 和 websockets(或 flashsockets)来处理通知和协调以与浏览器通信(如果另一个用户更新记录——比如推送通知或其他东西)。

最后一部分将我带到了 EventMachine,但是——正如我的引导问题所表明的——我不知道如何将它集成到我的 Rails 应用程序中。

谁能给我一些见解(比如,一个好的宏观层面的观点)或向我指出一些好的资源?(除了EventMachine 的 wiki,因为我已经去过那里)。

0 投票
2 回答
1386 浏览

ruby - 出错中止 EventMachine 进程

我正在创建一个后台脚本,该脚本使用 EventMachine 通过 WebSockets 连接到服务器。该脚本将使用 DelayedJob 或 Resque 运行。我已经能够让它与 WebSockets 服务器对话并发送消息,但是只要在 EventMachine 循环中引发错误,它就不会使脚本崩溃——这是应该发生的(以及我需要发生的) . 我不必使用 EventMachine,因为我只发送 WebSocket 消息而不接收它们 - 但我很想在这方面提供任何帮助 :) 谢谢!