问题标签 [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 - Ruby Eventmachine 排队问题
我有一个用 Ruby 编写的 Http 客户端,可以向 URL 发出同步请求。但是,为了快速执行多个请求,我决定使用 Eventmachine。这个想法是将所有请求排队并使用 eventmachine 执行它们。
请原谅我使用全局队列变量。我稍后会重构它。我正在以EventMachineBackend#execute
正确的方式使用 Eventmachine 队列吗?
我在实现中看到的一个问题是它本质上是同步的。我推送一个请求,弹出并执行请求并等待它完成。
任何人都可以提出更好的实施方案。
ruby-on-rails - Rails + EventMachine 应用程序开源应用程序?
我想在 Rails 中使用 EventMachine,并且我一直在阅读任何我可以接触到的与 EventMachine 相关的文章。它们中的大多数都具有一个简单的 EM 独立示例,因此我正在寻找一个完整的带有 EM 的开源应用程序来拆开。请帮忙?
ruby-on-rails - 需要帮助使用 EC2 设计视频转码处理?
我目前正在对用户上传的视频在 linode 服务器中进行转码并使用 s3 来存储它们,但是,作为我的乐观主义者,我想将转码移至 Amazon EC2 以在必要时扩大规模,同时获得使用它的经验。到目前为止,这是我的工作流程:
- 绕过 nginx/Rails 堆栈直接上传视频到 s3
- 使用视频 url 在 Amazon 简单队列服务中创建一个条目
- 查看是否有任何 EC2 实例正在运行,如果没有启动一个简单的 ruby 脚本作为启动脚本(我相信亚马逊允许启动脚本低于 6kb)
- Ruby 脚本连接到简单队列并运行 ffmpeg 命令对视频进行转码
- 脚本查看是否有任何其他队列并运行它们
- 当没有更多队列时关闭实例(可能会使其运行一小时,因为 Amazon 对 EC 实例运行的任何部分时间收取全小时费用)
显然以上是基本的,并没有完全使用 EC2。我考虑过使用线程连接到队列并在同一个 EC2 实例上运行新作业或创建其他 EC2 实例,其中启动脚本将运行 ruby 脚本。对于前者,我们需要根据 cpu 使用情况限制同一 EC2 中的作业数量。
后者似乎是一种浪费,但考虑到视频转码是 cpu 密集型的,可能同时两个 ffmpeg 是不可行的。我还考虑过 Amazon 的自动缩放来创建新实例,但使用 Ruby 对我来说似乎更简单、更容易。
- 我的问题是有效地做到这一点的最佳方法是什么?
- 运行两个 ffmpeg 是否被认为是不好的做法?(假设视频大小平均约为 200mbs。)
- 鉴于 Ruby 线程似乎有坏名声,使用它们是否是最佳选择?
- 我应该查看 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似乎是最好的选择。当然,我计划自己做一些测试,但我想在深入研究之前获得一些专家意见。谢谢!
原来这是一篇文章,抱歉太长了。
ruby-on-rails - Thin EventMachine Sinatra 与 Rails
我一直在研究使用 EventMachine 支持一些工作的可能性。在 Sinatra 中,这似乎工作得很好,但 Rails 3 似乎在渲染视图之前执行所有滴答声。
当我在瘦网络服务器下运行以下代码时,它的行为符合预期。第一个请求立即返回,第二个请求正在等待 3 秒的睡眠调用完成。这是预期的行为。
而在 Rails 3 运行中,我正在尝试做同样的事情:(在瘦身下运行)
在 Rails 中,睡眠调用发生在将视图呈现给浏览器之前。结果是我等待 3 秒来渲染初始页面。
有谁知道为什么会这样?我不是在寻找关于这是否是一个好习惯的评论。我只是在做实验。将小任务投入反应器循环似乎是一件有趣的事情。如果我要发出一些非阻塞的 http 请求,为什么客户端必须等待?
jquery - Rails - 同步 - Faye、Juggernaut、Cool.io、普通的旧事件机器
我需要同步并且有选择过载。似乎可用的选项包括:Faye、Juggernaut、Cool.io、plain old eventmachine
有什么建议么?什么是最受欢迎的,尤其是在 RoR 社区中?
感谢您对您的建议的任何解释。
ruby - eventmachine 服务器无法执行 receive_data
我有一个 eventmachine 应用程序,其中一个脚本正在从文件中读取,将数据逐行发送到另一个脚本,并且“服务器”脚本正在处理该数据。不幸的是,“服务器”脚本无法正常执行receive_data
。我知道正在建立连接,因为它 eecutes post_init
,并且我知道发件人脚本正在发送数据。这是我的一些代码以及我如何启动服务器。
注意:我将模块定义与我的类一起放在一个单独的文件中,如果这有什么不同的话,我需要将它们放入服务器脚本中。
html - 如何通过 EventMachine 发送 content_type = 'text/html' 的邮件
我有一个 sned 邮件系统。我使用 EventMachine 发送邮件。但是当我收到我发送的邮件时,我只得到了 html 代码,但是 html 视图。
如何在 EventMachine 中设置 conent_type = 'text/html'?
谢谢
ruby - 使用 EventMachine 进行异步数据库访问
我已经开始研究一个简单的 EventMachine 项目来接受来自一组网络客户端的数据,将其记录到数据库中,同时将其发送到另一组客户端。A 客户端的 => B 客户端的部分是反应堆使疯狂变得容易的那种事情,但数据库访问并没有那么多 - 至少,以非阻塞、事件的方式。我一直在尝试找到一个体面的 ORM,它以一种可以很好地与 EventMachine 配合使用的方式支持异步访问,同时仍然提供我所知道和喜爱的所有 ORM 抽象——我希望避免打开一堆套接字和谈论 SQL他们!此外,保持对 DB 支持的合理分布是可取的(例如,我看过几篇文章解释了如何使异步 ActiveRecord 仅与 mysql 一起工作)。
到目前为止,我发现的只是swift,看起来应该可以解决问题,但与您的 ActiveRecord 和 DataMappers 相比,它似乎很小。
这里还有其他值得追求的路径吗?也许主要的 ORM 强国之一有一个鲜为人知的异步分支?:P
ruby - EventMachine:EM 可以处理的最大并行 HTTP 请求是多少?
我正在构建一个分布式网络爬虫,并试图最大限度地利用每台机器的资源。我通过 Iterator 在 EventMachine 中运行解析函数,并使用 em-http-request 发出异步 HTTP 请求。目前我有 100 次同时运行的迭代,似乎我无法通过这个级别。如果我增加迭代次数,它不会影响爬行速度。但是,我只有 10-15% 的 cpu 负载和 20-30% 的网络负载,因此还有足够的空间可以更快地爬行。
我正在使用 Ruby 1.9.2。有没有办法改进代码以有效地使用资源,或者我什至做错了?
ruby - 互斥睡眠占用大量 CPU
我用 ruby-prof 分析了我的基于事件机器的应用程序,发现以下有趣的东西:
我认为 ruby-prof 只计算 CPU 滴答声,因此我无法弄清楚为什么互斥锁睡眠可能需要 CPU 时间。我假设它在内核级别上休眠,不计入光纤时间。有任何想法吗?更好的是,我希望 Mutex#sleep 将控制权释放给事件机器,以便它可以做其他事情。