2015-04-03 3 views
2

Je crée un site sur Flask. Toutes les communications avec le serveur passent par WebSockets. Quand j'utilise gunicorn avec TCP/IP:flask-socketio + gunicorn + nginx via un fichier socket unix [Errno -2]

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

Tout fonctionne très bien. Mais quand je l'utilise fichier socket Unix:

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

J'ai des erreurs dans le journal:

[[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) 

Comment puis-je corriger cette erreur?

Répondre

1

Le projet gevent-socketio (la dépendance de Flask-SocketIO qui gère le protocole Socket.IO) démarre un serveur Web secondaire utilisé pour le transport Flash. Ce serveur écoute sur le même hôte que votre serveur principal, mais sur le port 10843. Clairement, cette logique échoue lorsque le serveur principal écoute sur un socket unix.

Avez-vous besoin d'une assistance Flash? Si ce n'est pas le cas, je vous recommande de le désactiver complètement en définissant la variable d'environnement POLICY_SERVER sur une valeur non nulle. Voici la logique qui désactive le serveur de politique, au cas où vous êtes curieux: https://github.com/abourget/gevent-socketio/blob/668d11edbd62052cde1583be1e1d0512c930f16d/socketio/sgunicorn.py#L43-L47