ZeroMQ+Django&和uwsgi问题 [英] ZeroMQ + Django & uwsgi issues

查看:0
本文介绍了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&amp;和uwsgi问题的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆