Est-il possible d'utiliser Gunicorn pour gérer des vues WebSockets et WSGI standard dans une application (Flask)? Je sais comment faire fonctionner des websockets en utilisant le serveur Gevent WSGI, et je peux obtenir une application WSGI standard fonctionnant avec Gunicorn, avec des travailleurs de gevent, mais quand j'essaie de les servir ensemble à partir d'une application utilisant Gunicorn, je reçois une erreur:WebSockets et WSGI ensemble via Gunicorn
ValueError: View function did not return a response
Est-il possible de servir les deux d'une application, en utilisant gunicorn? Je prévois de mettre tout cela derrière nginx, et je ne suis pas opposé à la scission du socket dans une autre application et à ce que les deux communiquent, tant que cela n'exige pas trop de ressources système supplémentaires. D'ici là, y a-t-il un moyen de le faire de cette façon?
EDIT:
je me suis dit comment obtenir ce travail. La clé est 1) changer la fonction de journalisation pour gevent et 2) assurez-vous de spécifier à gunicorn que j'utilise les travailleurs de la classe geventWebSocketWorker.
Je trouve une partie de cette réponse sur ce site: http://d.hatena.ne.jp/Malan/20121007
Pour mémoire, je pense qu'il est probablement une meilleure idée d'avoir un serveur tornade en cours d'exécution/twisted/autobahn (merci Jordan) et un autre en cours d'exécution mes affaires WSGI . Mais ce n'est pas ce que je voulais ici :)
def log_request(self):
log = self.server.log
if log:
if hasattr(log, "info"):
log.info(self.format_request() + '\n')
else:
log.write(self.format_request() + '\n')
import gevent
gevent.pywsgi.WSGIHandler.log_request = log_request
from geventwebsocket.handler import WebSocketHandler
from gevent.pywsgi import WSGIServer
sudo gunicorn -c gunicorn_config.py -k "geventwebsocket.gunicorn.workers.GeventWebSocketWorker" router:app
Est-ce lié à ce que vous faites? http://stackoverflow.com/questions/13137449/combining-websockets-and-wsgi-in-a-python-app – Jordan
Absolument, mais je veux éviter d'utiliser tordu ou tornade avec ce projet, si possible. –
Vous devriez abandonner gunicorn en faveur d'uwsgi. – user37203