2015-04-03 132 views
2

我在Flask上创建网站。所有与服务器的通信都是通过WebSockets进行的。 当我使用gunicorn与TCP/IP:flask-socketio + gunicorn + nginx通过unix套接字文件[Errno -2]

gunicorn --worker-class socketio.sgunicorn.GeventSocketIOWorker chat:app --bind=127.0.0.1:8800 

,一切工作正常。但是当我使用Unix套接字文件:

gunicorn --worker-class socketio.sgunicorn.GeventSocketIOWorker chat:app -b unix:///var/sockets/gunicorn.sock 

我有错误日志:

[[email protected] legalize]# gunicorn --worker-class socketio.sgunicorn.GeventSocketIOWorker chat:app -b unix:///var/sockets/gunicorn.sock 
2015-04-03 13:32:26 [25392] [INFO] Starting gunicorn 18.0 
2015-04-03 13:32:26 [25392] [INFO] Listening at: unix:/var/sockets/gunicorn.sock (25392) 
2015-04-03 13:32:26 [25392] [INFO] Using worker: socketio.sgunicorn.GeventSocketIOWorker 
2015-04-03 13:32:26 [25397] [INFO] Booting worker with pid: 25397 
FAILED to start flash policy server: [Errno -2] Name or service not known: ('/', 10843) 
FAILED to start flash policy server: [Errno -2] Name or service not known: ('/', 10843) 
FAILED to start flash policy server: [Errno -2] Name or service not known: ('/', 10843) 

我如何解决这个错误?

回答

1

项目gevent-socketio(处理Socket.IO协议的Flask-SocketIO的依赖性)启动用于Flash传输的辅助Web服务器。该服务器在与主服务器相同的主机上侦听,但在端口10843处侦听。显然,当主服务器在unix套接字上侦听时,逻辑将失败。

你需要提供Flash支持吗?如果不是,我建议您完全禁用它,方法是将环境变量POLICY_SERVER设置为非空值。以下是禁用策略服务器的逻辑,如果您好奇:https://github.com/abourget/gevent-socketio/blob/668d11edbd62052cde1583be1e1d0512c930f16d/socketio/sgunicorn.py#L43-L47