让Tornado能够在等待RPC over RabbitMQ的响应时处理新请求

时间:2014-10-24 19:22:05

标签: python asynchronous rabbitmq tornado rpc

我有网络服务器监听客户端,当有人点击处理程序服务器时,向RabbitMQ发送RPC消息并在保持连接的同时等待响应。当来自RMQ的响应时,服务器将其作为对请求的响应传递给客户端。

Tornado文档中的所有异步示例都可以使用自己的http.fetch_async()或类似的方法,我知道我必须异步等待/读取RMQ ......但是如何?更糟糕的是 - 有时我必须在一个时刻发送几条消息(我创建线程池,每个线程发送一条消息)。

现在我无法重建架构以摆脱等待从RMQ发送答案,因此我阻止了网络服务器。然而,我们没有很多请求和RMQ响应足够快,但有时它可以使服务器等待一分钟。

所以现在我们只使用Gunicorn和很多工作人员和大型服务器,但我觉得它应该是一个更好的解决方案,并研究不同的选择。

Python 3.4,所以我们不能使用pika RMQ适配器并使用Celery的py-amqp。

1 个答案:

答案 0 :(得分:0)

将nginx与嵌入式perl一起使用..它就像超人一样......我们正在将它用于我们的分析工具。