PyZMQ 和 Django:不同视角的连接
PyZMQ and Django: connection from different view
我正在编写一个 Django Web 应用程序,用户可以在其中从每个视图执行不同的操作,当用户提交表单时,JSON 被推送到 ZeroMQ 并等待响应 (REQ-REP)。
我的问题是操作太慢了。我不知道问题是否发生,因为我使用的是在 VirtualBox 中虚拟化的低性能 Debian,但我认为问题是当我调用该函数时(见下文),我每次都建立一个新连接并且连接需要 5秒。
def push(obj):
try:
context = zmq.Context()
socket = context.socket(zmq.REQ)
socket.setsockopt(zmq.LINGER, 0)
socket.connect('tcp://127.0.0.1:8888')
socket.send_json(obj)
poller = zmq.Poller()
poller.register(socket, zmq.POLLIN)
if poller.poll(3*1000):
socket.recv()
return True
else:
return False
except:
return False
finally:
socket.close()
context.term()
这是对方代码:
context = zmq.Context()
socket = context.socket(zmq.REP)
socket.bind('tcp://127.0.0.1:8888')
while True:
obj = str(socket.recv_json())
print obj
socket.send('ACK')
我做错了什么?也许我应该认为我需要为所有用户会话保持打开的连接,但是如何呢?如有任何提示,我们将不胜感激。
谢谢!
我已经很好地解决了卸载从 debian 存储库安装的 libzmq-dev 的问题(我想我使用的是 2.2,但我不确定)并通过以下命令使用 pip 安装 PyZMQ 和 ZMQ:
pip install --no-use-wheel pyzmq
我不确定现在安装的是哪个版本,或者哪个版本最适合 python 2.7 的稳定生产环境,但它现在运行速度很快!
感谢您的帮助。
我正在编写一个 Django Web 应用程序,用户可以在其中从每个视图执行不同的操作,当用户提交表单时,JSON 被推送到 ZeroMQ 并等待响应 (REQ-REP)。
我的问题是操作太慢了。我不知道问题是否发生,因为我使用的是在 VirtualBox 中虚拟化的低性能 Debian,但我认为问题是当我调用该函数时(见下文),我每次都建立一个新连接并且连接需要 5秒。
def push(obj):
try:
context = zmq.Context()
socket = context.socket(zmq.REQ)
socket.setsockopt(zmq.LINGER, 0)
socket.connect('tcp://127.0.0.1:8888')
socket.send_json(obj)
poller = zmq.Poller()
poller.register(socket, zmq.POLLIN)
if poller.poll(3*1000):
socket.recv()
return True
else:
return False
except:
return False
finally:
socket.close()
context.term()
这是对方代码:
context = zmq.Context()
socket = context.socket(zmq.REP)
socket.bind('tcp://127.0.0.1:8888')
while True:
obj = str(socket.recv_json())
print obj
socket.send('ACK')
我做错了什么?也许我应该认为我需要为所有用户会话保持打开的连接,但是如何呢?如有任何提示,我们将不胜感激。
谢谢!
我已经很好地解决了卸载从 debian 存储库安装的 libzmq-dev 的问题(我想我使用的是 2.2,但我不确定)并通过以下命令使用 pip 安装 PyZMQ 和 ZMQ:
pip install --no-use-wheel pyzmq
我不确定现在安装的是哪个版本,或者哪个版本最适合 python 2.7 的稳定生产环境,但它现在运行速度很快!
感谢您的帮助。