【发布时间】:2014-01-04 10:23:13
【问题描述】:
有没有办法维护/使用 Rails 中的 POST 命令的持久连接?
我想创建一个 API,我的应用程序可以在其中接受相当于来自外部服务的数据流(我正在编写这个外部服务,因此我可以在此处灵活地进行设计)。速度至关重要。我需要以每秒 1000+ 点的速度从外部来源获取信息。在与一些计算机科学家同行交谈时,有人提出了使用持久连接的想法,以便只需执行一次昂贵的 TCP 握手。使用外部服务中的库,然后我将创建多个推送到我的 rails 应用程序中的 POST 项目,然后逐个处理这些 POST 项目。
我对 rails 范例的理解是每个请求(POST、GET、PUT 等)都需要一个 TCP 连接。有没有一种方法可以利用一个 TCP 连接来获取多个 POST?
我目前正在使用以下内容:
- Rails 3.2
- Ruby 1.9.3(必要时可以切换到 2.0)
编辑
为了帮助澄清我的目标是什么:
我有一个每秒收集 1,000 个数据点的外部系统(3 个浮点数、一个时间戳和 2 个整数)。我想将该数据推送到我的 Ruby on Rails 服务器。我希望通过正确配置的系统,我可以实时使用 HTTP 堆栈(收集数据点时,我将其推送到我的 rails 服务器)。我还可以减慢这种传输速度,并将数据点组合在一起发送。我已经研究过使用消息队列,但我想看看是否可以在使用专门的队列 API 之前编写一个更“标准”的 HTTP API。
【问题讨论】:
-
如果知道您通过
POST传输的具体内容会很有趣。如果可以将其放入多部分 MIME 消息中,则您可以流式传输请求,从而进一步减少开销。 -
@DaSourcerer 我更新了我的问题,希望这能让您了解我想要完成的工作。我从未听说过“流式传输”请求。我可以通过谷歌了解什么?
-
谢谢。我必须说,这是一个最有趣的问题。我有一些想法可能会对你有所帮助。我会在时间允许的情况下更新我的答案。
-
我已将我的流媒体创意添加到我的答案中。抱歉花了这么长时间:很可能我不是第一个有这个想法的人,但我找不到任何资源。我非常有信心这个解决方案符合所有相关的 RFC。
标签: ruby-on-rails http post stream keep-alive