问题标签 [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.
ruby - 在基于 EventMachine 的应用程序中读取文件的最佳方式是什么?
为了不阻塞反应器,我想异步读取文件,但我没有发现使用 EventMachine 的明显方法。我尝试了几种不同的方法,但没有一种感觉是对的:
- 只是读取文件,它会阻塞反应器,但到底是什么,它并没有那么慢(除非它是一个大文件,然后它肯定是)。
- 打开文件进行读取并在每个刻度上读取一个块(但是要读取多少?太多会阻塞反应器,太少并且读取会比必要的慢)。
EM.popen('cat some/file', FileReader)
感觉真的很奇怪,但比上面的替代品效果更好。结合LineAndTextProtocol
它,它可以非常迅速地读取行。EM.attach
,但我还没有找到任何如何使用它的示例,我在邮件列表中发现的唯一内容是它已被弃用,取而代之的是......</li>EM.watch
,我没有找到如何用于读取文件的示例。
您如何在 EventMachine 反应器循环中读取文件?
twisted - Ruby EventMachine、Python Twisted 或 JavaScript Node.js 的意义/目的是什么?
我不明白这些框架解决了什么问题。它们是 Apache HTTPD、Tomcat、Mongrel 等 HTTP 服务器的替代品吗?或者他们更多?我为什么要使用它们……一些真实世界的例子?我见过无数的聊天室和广播服务的例子,但看不出这与例如设置一个 Java 程序来打开套接字并为每个请求分派一个线程有什么不同。
我想我了解非阻塞 I/O,但我不明白这与多线程 Web 服务器有何不同。对于 Node.js,我读到它只有一个线程,这可能比同时处理多个线程更有效,但这是这些框架和传统 Web 服务器之间的唯一区别吗?
ruby - Sinatra 与 EventMachine WebSockets 一起工作是否成功?
我已经使用 Sinatra 有一段时间了,我想通过 websockets 推送数据来为我的 web 应用程序添加一些实时功能。
我已经成功地单独使用了 gem 'em-websocket',但无法编写一个具有 sinatra web 服务器和 web-socket 服务器的 ruby 文件。
我试过旋转跑步!或开始!方法在单独的线程中关闭,但没有成功。
有没有人让这个工作?
我想将它们放在同一个文件中,然后我可以在两台服务器之间共享变量。
谢谢!
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?
事件机:
红宝石线程:
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 反应器肯定在我的应用程序中运行。我很想知道如何让它正常工作的任何提示!
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!
ruby - 需要一个 ruby 解决方案来在单独的进程中执行方法
我正在实现一个轮询服务,其界面如下所示。
该start
方法应该不断地开始点击 http 请求并更新数据库中的内容。一旦start
ed,该过程应该继续,直到它被明确地stop
ed。
我了解实现start
需要在新进程中生成和运行。我不太确定如何在 Ruby 中实现这一点。我想要一个 ruby 解决方案,而不是一个特定于 ruby 框架的解决方案(不是 rails 插件或 sinatra 扩展。只是 ruby gems)。我正在探索 eventmachine 和 starling-workling。我发现 eventmachine 太大而无法在短时间内理解,并且工作是一个插件而不是一个 gem。所以让它为 Ruby 应用程序工作是一件痛苦的事情。
我需要有关如何实现这一目标的指导。任何指针?代码示例会有所帮助。
编辑
Eventmachine 或 starling-workling 解决方案将优于线程/分叉。
ruby - 用于实时/并行 HTTP 爬虫的好库/平台?
我正在构建一个爬虫,它可以从多个网站实时并行获取信息,以响应客户端对这些信息的请求。我需要从 10-20 个网站请求特定页面,解析它们的内容以获取特定的信息片段,并尽快将这些信息返回给客户端。我想异步执行此操作,因此客户端在准备好后立即显示第一个结果,而其他请求仍处于待处理状态。
我有 Ruby 背景,因此更愿意在 Ruby 中构建解决方案 - 然而,并行性和速度正是 Ruby 所不擅长的。我相信诸如EventMachine和Typhoeus 之类的库可以解决这个问题,但我也在强烈考虑node.js,因为我非常了解 javascript 并且似乎是为这种事情而构建的。
无论我选择什么,我还需要一种有效的方式将结果传达给客户。我正在考虑普通的 AJAX(但这需要轮询服务器)、Web 套接字(但这需要对旧版浏览器进行回退)和用于持久客户端/服务器通信的特定解决方案,例如Cramp、Juggernaut和Pusher。
有没有人想分享任何经验和/或建议?
ruby-on-rails - EventMachine 和 Rails 是如何集成的?
我发现很多文章向我展示了 EventMachine 是什么以及如何设置无休止的“Hello World!”。示例,但我仍然不知道它如何与我的 Rails 应用程序集成。
例如,我有一个现有的 Rails 应用程序,它有许多并发用户,他们可能同时在我的数据库中编辑同一行。我在想我会允许两个(或更多)不同的人加载记录,但如果记录已更新,请通知这些用户,并强制后者用户在将其保存回数据库之前协调任何冲突的更改。我在想我可以在客户端使用 Javascript 和 websockets(或 flashsockets)来处理通知和协调以与浏览器通信(如果另一个用户更新记录——比如推送通知或其他东西)。
最后一部分将我带到了 EventMachine,但是——正如我的引导问题所表明的——我不知道如何将它集成到我的 Rails 应用程序中。
谁能给我一些见解(比如,一个好的宏观层面的观点)或向我指出一些好的资源?(除了EventMachine 的 wiki,因为我已经去过那里)。
ruby - 出错中止 EventMachine 进程
我正在创建一个后台脚本,该脚本使用 EventMachine 通过 WebSockets 连接到服务器。该脚本将使用 DelayedJob 或 Resque 运行。我已经能够让它与 WebSockets 服务器对话并发送消息,但是只要在 EventMachine 循环中引发错误,它就不会使脚本崩溃——这是应该发生的(以及我需要发生的) . 我不必使用 EventMachine,因为我只发送 WebSocket 消息而不接收它们 - 但我很想在这方面提供任何帮助 :) 谢谢!