问题标签 [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 客户端发送到服务器。问题是服务器 receive_date 方法只打印一个字符串。
服务器:
客户端:
这一行: puts data[:total]
只打印零
ruby - 使用 Ruby 实现非阻塞 IO?
我对非阻塞 IO 有一些疑问:
如果我在 Nginx 上使用没有 EventMachine 的 Ruby,我可以利用非阻塞 IO 吗?
如果我在 Apache 上使用 Ruby 和 EventMachine,我可以利用非阻塞 IO 吗?
如果上述答案是否定的,那么这意味着我必须在 Nginx 上使用 Ruby 和 EventMachine 来利用非阻塞 IO?
ruby-on-rails - Ruby on Rails + EventMachine?
我听说您必须在整个应用程序中使用非阻塞代码才能利用 EventMachine 的真正力量。
这是否意味着我无法使用 EventMachine 运行 Ruby on Rails?
ruby - Ruby eventmachine 错误:'没有循环断路器'
我从 eventmachine(0.12.10,在 OSX 10.6.4 上)得到一个轻微的 heisen 错误:
它仅发生在测试中,并且仅在所有测试一起运行时发生。他们通过单独运行。
我发现 eventmachine 代码中唯一提到错误消息的地方:
http://github.com/eventmachine/eventmachine/blob/master/ext/em.cpp#L333
(让我感到困惑的是,它看起来像一个 win32 代码路径,还是我错了?)
对我来说,看起来像套接字这样的资源已经用完了。这将解释发生模式。
ruby - 使用 Thin 和 Sinatra 异步迭代请求的响应
如果您在 Sinatra 中的响应返回一个“eachable”对象,则 Sinatra 的事件循环将“每个”您的结果并以流方式将结果作为 HTTP 响应产生。但是,如果对 Sinatra 有并发请求,它将在处理另一个请求之前遍历一个响应的所有元素。如果我们有一个指向某个数据库查询结果的游标,这意味着我们必须等待所有数据都可用,然后才能处理并发查询。
我看过 async-sinatra gem 和http://macournoyer.com/blog/2009/06/04/pusher-and-async-with-thin/,认为这些可以解决我的问题,但我试过了出这个例子:
并且/delay/5
请求不会像我预期的那样同时工作,即我同时发出 3 个请求,Chrome 的调试器将响应时间记录为大约 5、10 和 15 秒。
我错过了一些设置还是有另一种方法告诉 Sinatra/Thin 以并发方式处理请求?
更新:这是另一个问题(或可能解决问题):并发运行具有正确的行为(每个请求在约 5 秒内返回 2 个)。运行(Apache 基准实用程序)也会在总时间(约 25 秒)内返回一些合理的值。Firefox 表现出与 Chrome 相同的行为。浏览器与命令行实用程序有何不同?curl -i http://localhost:3000/delay/5
ab -c 10 -n 50 http://locahost:3000/delay/5
ruby - EventMachine 的一个问题
我的问题是如何在 EchoServer 模块中获取 some_value ?类 Test 和模块 EchoServer 之间的关系是什么?
ruby - Eventmachine::defer + ruby
我使用 EventMachine 已经有一段时间了,我真的觉得它很棒,因为它管理向我展示了我不必担心任何事情。但最近我发现了一个我无法理解的奇怪问题
这里只是告诉
我有 Eventmachine 循环,看起来像这样
这里我的操作块看起来像(下面使用 amqp 使用胡萝卜宝石的代码)
这里我的回调块看起来像
现在问题来了,代码虽然按照它应该的方式工作,直到发生不好的事情我的意思是
现在假设我运行上面的代码
我有一个队列集名称“my_queue”,或者如果它不存在,它将创建一个队列最初是空的
这是我在控制台上得到的输出
启动队列
队列正在弹出消息
BOO 对进程没有任何影响
当我根据消息在控制台中构建输出更改时
现在的麻烦
如果我暂时关闭我的 AMQP 服务器这里的输出(显示我的意思)
启动队列
Broken Pipe => Error That Caught in begin rescue block in operation block
现在启动 AMQP 服务器
代码似乎永远不会从当前出现错误的行向前移动,这意味着我似乎从未打印过该行
队列正在弹出消息
不仅发生了重试的当前延迟,而且在 Timer 时间刚刚过去之后启动的新延迟操作块,即后续调用操作块的方法似乎永远不会向前移动并进行处理,并且总是只打印以下输出
只是似乎永远不会前进(卡住)并进行处理,即从队列中获取消息并相应地进行处理,并且所有其他内容(因为 AMQP 服务器现在正在运行)
谢谢
ruby - Ruby concurrency/asynchronous processing (with simple use case)
I was looking into ruby's parallel/asynchronous processing capabilities and read many articles and blog posts. I looked through EventMachine, Fibers, Revactor, Reia, etc, etc. Unfortunately, I wasn't able to find a simple, effective (and non-IO-blocking) solution for this very simple use case:
Is you can see, my little script is performing three operations read (R), process (P) & write (W). Let's assume - for simplicity - that each operation takes exactly 1 unit of time (e.g. 10ms), the current code would therefore do something like this (5 lines):
But, I would like it to do something like this:
Obviously, I could run three processes (reader, processor & writer) and pass read lines from reader into the processor queue and then pass processed lines into the writer queue (all coordinated via e.g. RabbitMQ). But, the use-case is so simple, it just doesn't feel right.
Any clues on how this could be done (without switching from Ruby to Erlang, Closure or Scala)?
ruby - 如何使用 SSL 客户端证书获取 HTTPS 请求以使用 Ruby EventMachine?
我正在尝试使用 Ruby EventMachine 访问使用 SSL 证书身份验证的 HTTPS Web 服务,但我没有让它工作。
我编写了以下简单的代码块来对其进行端到端测试:
运行上述输出,<SSL_incomp>
然后运行引发的 RuntimeError 消息。我尝试将:verify_peer
set 设置为 true 和 false 运行,它给了我同样的错误。EventMachine::HttpRequest#get
不带:ssl
选项运行也是如此。
我还尝试在没有选项的情况下将请求发送到 GMail ( https://mail.google.com ) :ssl
(即没有证书的普通 HTTPS),并且可以输出状态代码 200、标题和正文。
我尝试使用 curl 对 Web 服务执行相同的请求,并且有效:
我在想我要么错误地使用了 em-http-request gem 或 EventMachine,要么 SSL 文件的格式适用于 curl 但不适用于 EventMachine。
我有人知道如何解决上面的示例或直接使用 EventMachine 提供类似的示例将不胜感激!
ruby-on-rails - AJAX 和 Rails:两个堆栈还是一个?
大多数 Web 应用程序都是非常标准的 CRUD。我需要一些数据在创建时实时推送给客户端。是否值得为 AJAX 运行一个单独的、更轻量级的堆栈(例如 Sinatra 或 EventMachine)?
如果我运行一个堆栈,我将有 Rails 的开销。这可能需要更多 Rails 进程/服务器,那么如何在没有数据库查询的情况下在这些进程/服务器之间进行通信?零MQ?最后,Rails 是否适合处理数百个并发连接?
如果我运行两个堆栈,我将需要复制授权逻辑。
哪些方法对您来说是成功的?