问题标签 [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 回答
2250 浏览

ruby - Ruby Eventmachine 排队问题

我有一个用 Ruby 编写的 Http 客户端,可以向 URL 发出同步请求。但是,为了快速执行多个请求,我决定使用 Eventmachine。这个想法是将所有请求排队并使用 eventmachine 执行它们。

请原谅我使用全局队列变量。我稍后会重构它。我正在以EventMachineBackend#execute正确的方式使用 Eventmachine 队列吗?

我在实现中看到的一个问题是它本质上是同步的。我推送一个请求,弹出并执行请求并等待它完成。

任何人都可以提出更好的实施方案。

0 投票
2 回答
598 浏览

ruby-on-rails - Rails + EventMachine 应用程序开源应用程序?

我想在 Rails 中使用 EventMachine,并且我一直在阅读任何我可以接触到的与 EventMachine 相关的文章。它们中的大多数都具有一个简单的 EM 独立示例,因此我正在寻找一个完整的带有 EM 的开源应用程序来拆开。请帮忙?

0 投票
1 回答
919 浏览

ruby-on-rails - 需要帮助使用 EC2 设计视频转码处理?

我目前正在对用户上传的视频在 linode 服务器中进行转码并使用 s3 来存储它们,但是,作为我的乐观主义者,我想将转码移至 Amazon EC2 以在必要时扩大规模,同时获得使用它的经验。到目前为止,这是我的工作流程:

  1. 绕过 nginx/Rails 堆栈直接上传视频到 s3
  2. 使用视频 url 在 Amazon 简单队列服务中创建一个条目
  3. 查看是否有任何 EC2 实例正在运行,如果没有启动一个简单的 ruby​​ 脚本作为启动脚本(我相信亚马逊允许启动脚本低于 6kb)
  4. Ruby 脚本连接到简单队列并运行 ffmpeg 命令对视频进行转码
  5. 脚本查看是否有任何其他队列并运行它们
  6. 当没有更多队列时关闭实例(可能会使其运行一小时,因为 Amazon 对 EC 实例运行的任何部分时间收取全小时费用)

显然以上是基本的,并没有完全使用 EC2。我考虑过使用线程连接到队列并在同一个 EC2 实例上运行新作业或创建其他 EC2 实例,其中启动脚本将运行 ruby​​ 脚本。对于前者,我们需要根据 cpu 使用情况限制同一 EC2 中的作业数量。

后者似乎是一种浪费,但考虑到视频转码是 cpu 密集型的,可能同时两个 ffmpeg 是不可行的。我还考虑过 Amazon 的自动缩放来创建新实例,但使用 Ruby 对我来说似乎更简单、更容易。

  1. 我的问题是有效地做到这一点的最佳方法是什么?
  2. 运行两个 ffmpeg 是否被认为是不好的做法?(假设视频大小平均约为 200mbs。)
  3. 鉴于 Ruby 线程似乎有坏名声,使用它们是否是最佳选择?
  4. 我应该查看 EventMachine 来代替线程吗?

除非必要,否则我不想运行任何 EC2 实例,最大限度地利用实例,但不要让我的用户等待他们的视频转码太久。

基于这篇文章http://stream0.org/2009/10/h264-video-encoding-on-amazons.htmlhttp://stream0.org/2009/10/h264-video-encoding-on-amazons.html 高-CPU,Extra Large Instance似乎是最好的选择。当然,我计划自己做一些测试,但我想在深入研究之前获得一些专家意见。谢谢!

原来这是一篇文章,抱歉太长了。

0 投票
2 回答
3109 浏览

ruby-on-rails - Thin EventMachine Sinatra 与 Rails

我一直在研究使用 EventMachine 支持一些工作的可能性。在 Sinatra 中,这似乎工作得很好,但 Rails 3 似乎在渲染视图之前执行所有滴答声。

当我在瘦网络服务器下运行以下代码时,它的行为符合预期。第一个请求立即返回,第二个请求正在等待 3 秒的睡眠调用完成。这是预期的行为。

而在 Rails 3 运行中,我正在尝试做同样的事情:(在瘦身下运行)

在 Rails 中,睡眠调用发生在将视图呈现给浏览器之前。结果是我等待 3 秒来渲染初始页面。

有谁知道为什么会这样?我不是在寻找关于这是否是一个好习惯的评论。我只是在做实验。将小任务投入反应器循环似乎是一件有趣的事情。如果我要发出一些非阻塞的 http 请求,为什么客户端必须等待?

0 投票
2 回答
1895 浏览

jquery - Rails - 同步 - Faye、Juggernaut、Cool.io、普通的旧事件机器

我需要同步并且有选择过载。似乎可用的选项包括:Faye、Juggernaut、Cool.io、plain old eventmachine

有什么建议么?什么是最受欢迎的,尤其是在 RoR 社区中?

感谢您对您的建议的任何解释。

0 投票
1 回答
267 浏览

ruby - eventmachine 服务器无法执行 receive_data

我有一个 eventmachine 应用程序,其中一个脚本正在从文件中读取,将数据逐行发送到另一个脚本,并且“服务器”脚本正在处理该数据。不幸的是,“服务器”脚本无法正常执行receive_data。我知道正在建立连接,因为它 eecutes post_init,并且我知道发件人脚本正在发送数据。这是我的一些代码以及我如何启动服务器。

注意:我将模块定义与我的类一起放在一个单独的文件中,如果这有什么不同的话,我需要将它们放入服务器脚本中。

0 投票
2 回答
606 浏览

html - 如何通过 EventMachine 发送 content_type = 'text/html' 的邮件

我有一个 sned 邮件系统。我使用 EventMachine 发送邮件。但是当我收到我发送的邮件时,我只得到了 html 代码,但是 html 视图。

如何在 EventMachine 中设置 conent_type = 'text/html'?

谢谢

0 投票
2 回答
1561 浏览

ruby - 使用 EventMachine 进行异步数据库访问

我已经开始研究一个简单的 EventMachine 项目来接受来自一组网络客户端的数据,将其记录到数据库中,同时将其发送到另一组客户端。A 客户端的 => B 客户端的部分是反应堆使疯狂变得容易的那种事情,但数据库访问并没有那么多 - 至少,以非阻塞、事件的方式。我一直在尝试找到一个体面的 ORM,它以一种可以很好地与 EventMachine 配合使用的方式支持异步访问,同时仍然提供我所知道和喜爱的所有 ORM 抽象——我希望避免打开一堆套接字和谈论 SQL他们!此外,保持对 DB 支持的合理分布是可取的(例如,我看过几篇文章解释了如何使异步 ActiveRecord 仅与 mysql 一起工作)。

到目前为止,我发现的只是swift,看起来应该可以解决问题,但与您的 ActiveRecord 和 DataMappers 相比,它似乎很小。

这里还有其他值得追求的路径吗?也许主要的 ORM 强国之一有一个鲜为人知的异步分支?:P

0 投票
2 回答
1456 浏览

ruby - EventMachine:EM 可以处理的最大并行 HTTP 请求是多少?

我正在构建一个分布式网络爬虫,并试图最大限度地利用每台机器的资源。我通过 Iterator 在 EventMachine 中运行解析函数,并使用 em-http-request 发出异步 HTTP 请求。目前我有 100 次同时运行的迭代,似乎我无法通过这个级别。如果我增加迭代次数,它不会影响爬行速度。但是,我只有 10-15% 的 cpu 负载和 20-30% 的网络负载,因此还有足够的空间可以更快地爬行。

我正在使用 Ruby 1.9.2。有没有办法改进代码以有效地使用资源,或者我什至做错了?

0 投票
5 回答
988 浏览

ruby - 互斥睡眠占用大量 CPU

我用 ruby​​-prof 分析了我的基于事件机器的应用程序,发现以下有趣的东西:

我认为 ruby​​-prof 只计算 CPU 滴答声,因此我无法弄清楚为什么互斥锁睡眠可能需要 CPU 时间。我假设它在内核级别上休眠,不计入光纤时间。有任何想法吗?更好的是,我希望 Mutex#sleep 将控制权释放给事件机器,以便它可以做其他事情。