我尝试了requests
,但由于tcp连接需要很长时间(我不知道如何保持套接字打开),所以看起来很慢
我现在尝试zerorpc
,它有persistent connection
的概念。
Django<;->;节点.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代码有关。在
zerorpc将gevent用于协作异步IOs,而django一次处理一个请求。当django处理一些IOs时,zerorpc无法获得它应得的CPU时间份额,并且无法处理心跳信号。在zerorpc python中可以关闭heartbeat(正是因为这个原因),但是在zerorpc节点上没有!在
一种解决方案是在geventioloop之上运行django,看起来http://gunicorn.org/可能会有所帮助。在
相关问题 更多 >
编程相关推荐