flask-socketio + gunicorn + nginx 通过 unix 套接字文件 [Errno -2]
flask-socketio + gunicorn + nginx through unix socket file [Errno -2]
我在 Flask 上创建网站。与服务器的所有通信都通过 WebSockets。
当我将 gunicorn 与 TCP/IP:
一起使用时
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
我在日志中有错误:
[root@localhost 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)
我该如何解决这个错误?
项目 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
我在 Flask 上创建网站。与服务器的所有通信都通过 WebSockets。 当我将 gunicorn 与 TCP/IP:
一起使用时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
我在日志中有错误:
[root@localhost 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)
我该如何解决这个错误?
项目 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