如何在gunicorn上运行python websocket

时间:2014-01-09 16:27:02

标签: python flask

我从SO中找到了这个0依赖python websocket服务器:
https://gist.github.com/jkp/3136208
我正在为我的flask应用程序使用gunicorn,我也希望使用gunicorn来运行这个websocket服务器。在代码的最后几行中,它运行服务器:

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

我无法弄清楚如何在websocketserver.py中运行此gunicorn。这是因为人们会认为您希望gunicorn运行server_forever()以及SocketServer.TCPServer(...。 这可能吗?

2 个答案:

答案 0 :(得分:3)

GUnicorn希望WSGI应用程序(PEP 333)不仅仅是一个函数。您的应用必须接受environ变量和start_response回调并返回数据迭代器(粗略地说)。由SocketServer.StreamRequestHandler封装的所有机器都在枪支方面。我想这是修改这个要点以成为WSGI应用程序的很多工作(但这很有趣!)。

或者,也许这个图书馆将为您完成工作:https://github.com/CMGS/gunicorn-websocket

答案 1 :(得分:3)

如果您使用Flask-Sockets扩展,您可以直接在扩展中使用gunicorn的websocket实现,从而可以从以下命令行开始:

gunicorn -k flask_sockets.worker app:app

虽然我不知道你是不是想做什么。