uwsgi解除阻塞Websockets线程并卸载

时间:2018-09-05 12:53:57

标签: websocket uwsgi python-asyncio gevent offloading

我正在编写一个Python3 WSGI flask应用程序,并使用uwsgi运行它。它具有使用flask-uwsgi-websocket(GeventWebsocket)作为websockets处理程序的终结点。在该网络套接字上,服务器端会定期(每3秒)将消息推送到客户端。如果执行了不同的端点,我希望立即发送该消息。

以前,我在websocket的“ while”循环中有一个time.sleep(3),显然是不可中断的。我尝试用threading.Cond()替换它,但是注意到以prefork模式运行uwsgi意味着存在不同的过程,即取消阻止不起作用。我还尝试了使用asyncio,尤其是yield from asyncio.sleep(3)(两者都与AsyncioWebSocketGeventWebSocket一起使用),但这也不起作用。显然我不知道自己在做什么。另外我还注意到,如果有足够多的客户端连接服务器只是“挂起”,我的Websockets连接都不会卸载。

鉴于该应用程序完全由我决定,最简单的方法是实现什么,理想情况下使用非传统技术(Python3.6,asyncio?)以及我如何需要uwsgi来运行我的应用程序以使其卸载无限,有效阻止Websockets循环?

0 个答案:

没有答案