2013-07-13 2 views
8

Можно ли использовать 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  
+1

Это связано с тем, что вы делаете? http://stackoverflow.com/questions/13137449/combining-websockets-and-wsgi-in-a-python-app – Jordan

+0

Абсолютно, но я хочу избежать использования витой или торнадо с этим проектом, если это возможно. –

+0

Вы должны стрелять из пушки в пользу uwsgi. – user37203

ответ