django< - > node.js快速通信

时间:2015-02-18 08:01:25

标签: python django node.js zerorpc

我尝试了requests,但由于tcp连接需要很长时间(我不知道如何保持套接字打开),因此它看起来似乎很慢。

我现在正在尝试zerorpc,它的概念是persistent connection Django< - > node.js通信适用于第一条消息,但在第二次尝试时失败并出现Lost remote after 10s heartbeat错误。

我可能遗漏了一些明显的东西。

# following connection step is done in python a module so that it gets called only one time 
import zerorpc

client = zerorpc.Client()
client.connect("tcp://127.0.0.1:7015")

def something(...):
   # this gets called for a http request, and we are messaging node.js using the zerorpc client.
   ...
   client.call_rpc(message)

其他客户端(来自命令行)仍然可以与服务器通信并获得响应,因此我猜它与上面的django代码有关。

1 个答案:

答案 0 :(得分:2)

zerorpc将gevent用于协作异步IO,而django一次处理一个请求。当django正在处理一些IO时,zerorpc没有得到其公平的CPU时间份额,并且无法处理心跳。在zerorpc-python中可以关闭心跳(出于这个原因),但不是在zerorpc节点上!

一种解决方案是在gevent ioloop上运行django,看起来http://gunicorn.org/可以提供一些帮助。