我有带有uWSGI的NGINX服务器和带有PyZMQ的python(安装为sudo pip install pyzmq)。
我尝试从ZMQ上下文创建套接字,但始终捕获异常。
import zmq
import os
import sys
from cgi import parse_qs, escape
sys.path.append('/usr/share/nginx/www/application')
os.environ['PYTHON_EGG_CACHE'] = '/usr/share/nginx/www/.python-egg'
def application(environ, start_response):
ctx = zmq.Context()
try:
message = 'Everything OK'
s = ctx.socket(zmq.REQ)
except Exception as e:
message = "Exception({0}): {1}".format(e.errno, e.strerror)
pass
response_headers = [('Content-type', 'text/plain'), ('Content-Length', str(len(message)))]
start_response('200 OK', response_headers);
return [message]
引发了异常
Exception(14): Bad address
如果我评论了行
s = ctx.socket(zmq.REQ)
然后一切都好。
我在互联网上搜索,但没有人遇到同样的问题。
拜托,你知道吗,我做错了什么?
修改
我编写了简单的python脚本,工作正常,我从recv获得响应:
import zmq
import os
import sys
print 'Create zeromq instance...'
ctx = zmq.Context()
print 'Create socket ...'
try:
s = ctx.socket(zmq.REQ)
except Exception as e:
print "Exception({0}): {1}".format(e.errno, e.strerror)
sys.exit()
s.connect('tcp://localhost:5555')
s.send('fTtt;')
message = s.recv()
print message
我似乎是uWSGI运行python ZMQ的一个问题,但为什么呢?
答案 0 :(得分:1)
好吧,似乎与ZeroMQ + Django & uwsgi issues
相同的错误问题出现是因为zmq context创建了一个后台线程,并且在fork()之后没有继承这个线程。
我用简单的python wsgi和它的工作尝试NGINX。
答案 1 :(得分:0)
据推测,您打算在HTTP响应下面的某个地方使用套接字?因为目前你没有连接或绑定任何东西,这使得#34; Bad address"异常相当奇怪。尝试创建一个没有cgi,nginx,缓存,响应内容,只需创建ZMQ上下文和套接字创建的最小示例,看看是否引发了相同的异常。如果是这样,那么您的装订或图书馆中就会出现问题。确保所有内容都已正确安装,并且所有版本都兼容。