ZeroMQ+Django&;和uwsgi问题 [英] ZeroMQ + Django & uwsgi issues
本文介绍了ZeroMQ+Django&;和uwsgi问题的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
使用Django时,我们需要将消息发送到另一个单独的python程序。 Zeromq似乎是轻量级的,应该符合这一要求。
但是,当尝试将套接字设置为zmq.PUSH(或其他任何值)时,它总是以ZeroMQ:Bad Address错误结束。 这是回溯:Exception Type: ZMQError
Exception Value: Bad address
...
...
sock = context.socket(zmq.PUSH)
/usr/local/lib/python2.7/dist-packages/zmq/sugar/context.py in socket
s = self._socket_class(self, socket_type)
self <zmq.sugar.context.Context object at 0x200dc80>
socket_type 8
上下文是在mods.py中的调用函数中创建的,并且只执行以下操作:
context = zmq.Context()
sock = context.socket(zmq.PUSH)
< ^ crash here>
sock.bind('tcp://127.0.0.1:8921')
...
通过
启动exec uwsgi_python
--master --pidfile=/tmp/blah.pid
--chdir=/path/to/site
--module=program.wsgi:application
--env DJANGO_SETTINGS_MODULE=program.settings
--uid user --gid 1000
--socket=/tmp/uwsgi_program.sock
--chmod-socket
--vacuum
--harakiri=20
--processes=2
--max-requests=5000
--die-on-term
我还尝试将--lazy添加到启动脚本,但没有帮助,同样的错误。
wsgi.py文件具有
import django.core.handlers.wsgi
from raven.contrib.django.middleware.wsgi import Sentry
application = Sentry(django.core.handlers.wsgi.WSGIHandler())
当然,对于不使用uWSGI的runserver或另一台服务器,一切工作正常。
因此,它创建的zeromq上下文似乎在某种程度上是无效的。 尝试修改wsgi.py文件以在其中生成zeromq上下文,使用@postfork仍然不能解决这个问题,完全相同的错误。然而,我也不喜欢使用@postfork,因为这将需要单独的代码路径,这取决于我们是使用uWSGI还是其他什么,如果可能的话,应该更干净地完成这项工作。我忽略了什么?
推荐答案
我尝试了所有不同的选项,最后决定pythonuwsgi选项最适合我们的设置。有关安装的说明,请参阅以下site
这篇关于ZeroMQ+Django&;和uwsgi问题的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文