Можно ли использовать Gunicorn для работы с WebSockets и регулярными представлениями WSGI в одном приложении (Flask)?WebSockets и WSGI вместе с Gunicorn
Я знаю, как получить веб-сайты для работы с использованием сервера Gevent WSGI, и я могу получить обычное приложение WSGI, работающее с Gunicorn, с рабочими Gevent, но когда я пытаюсь обслуживать этих двух вместе из одного приложения, используя Gunicorn, я получаю ошибка:
ValueError: View function did not return a response
Можно ли обслуживать два из одного приложения, используя пушки? Я планирую в конце концов поставить все это на nginx, и я не прочь разделить сокет в другое приложение и иметь двух контактов, если это не потребует слишком много дополнительных системных ресурсов. До тех пор, есть ли способ сделать это таким образом?
EDIT:
Я понял, как получить эту работу. Ключ: 1) изменить функцию ведения журнала для gevent и 2) обязательно указывать на gunicorn, что я использую работников класса geventWebSocketWorker.
Я нашел часть этого ответа на этом сайте: http://d.hatena.ne.jp/Malan/20121007
Для записи, я думаю, что это, вероятно, лучше иметь один сервер под управлением Торнадо/скрученный/автобан (спасибо Jordan), а другой работает мой WSGI материал , Но это не то, что я хотел здесь :)
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
Это связано с тем, что вы делаете? http://stackoverflow.com/questions/13137449/combining-websockets-and-wsgi-in-a-python-app – Jordan
Абсолютно, но я хочу избежать использования витой или торнадо с этим проектом, если это возможно. –
Вы должны стрелять из пушки в пользу uwsgi. – user37203