2015-04-03 130 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