2014-01-09 37 views
2

蟒蛇的WebSocket我發現這個0依賴蟒的WebSocket服務器從SO:
https://gist.github.com/jkp/3136208
我使用gunicorn我flask應用程序,我想跑使用gunicorn也是這個WebSocket的服務器。在代碼的最後幾行它運行在服務器:如何運行gunicorn

if __name__ == "__main__": 
    server = SocketServer.TCPServer(
     ("localhost", 9999), WebSocketsHandler) 
    server.serve_forever() 

我無法弄清楚如何得到這個websocketserver.pygunicorn運行。這是因爲人們會認爲你想要gunicorn運行server_forever()以及SocketServer.TCPServer(...。 這可能嗎?

回答

3

GUnicorn希望WSGI應用程序(PEP 333)不只是一個函數。您的應用必須接受environ變量和start_response回調,並返回數據的迭代器(粗略地說)。所有由SocketServer.StreamRequestHandler封裝的機器都在gunicorn一側。我想這是一個很大的工作來修改這個要點,成爲一個WSGI應用程序(但這很有趣!)。

或者,也許這個庫將會把工作給你做:https://github.com/CMGS/gunicorn-websocket

+0

這回答我的問題。它已經被寫入。沒有理由重新發明輪子。 – Johnston

3

如果使用燒瓶套接字擴展,您可以直接在擴展gunicorn一個的WebSocket實現,這使得它可以先從以下命令行:

gunicorn -k flask_sockets.worker app:app 

雖然我不知道這是你想要做什麼。

+0

你是對的。我用「龍捲風」來取而代之。我發現了一個示例應用程序,讓我開始使用我想要實現的大部分功能。 https://github.com/hiroakis/tornado-websocket-example/ – Johnston

+1

不久將在Python/Flask和JS的Websockets上編寫一個教程。因爲我掙扎着,所以我想人們會覺得它很有趣。 – Depado

+0

儘管我最初使用Flask Websockets。迴應api電話時,我無法發送消息。例如響應「發佈」請求。在那個例子中,這正是他們所做的。 – Johnston

相關問題