我已经读过有关Python websockets Library的内容,它实际上对我有用。我特别满意从Web客户端进行连接的标准方式:
var ws = new WebSocket("ws://127.0.0.1:5678/")
ws.onmessage = function (event) ...
无需导入,所有内容都是标准的,并且由现代浏览器提供开箱即用的支持。到目前为止,一切都很好,但是Python应用程序是Flask with Connexion,用于基于swagger.yaml的REST API。 Websockets库不能与Flask / Connexion共享相同的端口。好的,有Flask-socketio库,我可以与Connexion一起运行,并为REST和Websockets提供服务器。但是对我来说,它有几个缺点,我正在寻求您的帮助:
uwsgi --http:5000 --gevent 1000 --http-websockets --master --wsgi-file app.py --callable app
在uWSGI下将Flask-socketio服务器部署用于生产是否有编写良好的逐步说明? Nginx是否起作用?我将能够在浏览器中使用Websocket,还是仍然可以使用socketio?
答案 0 :(得分:1)
让我尝试澄清一下:
如果使用Socket.IO服务器,则必须使用Socket.IO客户端。 Socket.IO与WebSocket不同。
您正在使用gevent运行uWSGI,因此并发是通过greenlets处理的。 --gevent 1000
参数配置1000个并发任务。除非您用完了所有的uWSGI进程,否则您不需要它们就可以生成1000个。
在uWSGI下将Flask-socketio服务器部署用于生产是否有编写良好的逐步说明?
我所能提供的是Flask-SocketIO和python-socketio文档。
nginx是否起作用?
由您决定,真的。 uWSGI服务器已经可以投入生产,但是将其放置在nginx后面并让nginx终止TLS,提供静态内容等是相当普遍的。
我将能够在浏览器中使用Websocket,还是仍然可以使用socketio?
不。见上文。