我试图在纯Python + uWSGI中实现一个简单的websockets应用程序。
最初我只是使用uwsgi.websocket_recv()来编写它来从客户端获取消息。这工作得很好,但是因为我希望我的应用程序能够同时处理多个客户端并在它们之间交换消息,所以我将其更改为使用uwsgi.websocket_recv_nb()这是非阻塞变体。
我注意到当使用uwsgi.websocket_recv_nb()而不是uwsgi.websocket_recv()时,服务器的连接将在客户端连接30秒后终止,并且uwsgi将在控制台中吐出以下错误:
[uwsgi-websocket]“GET /”(192.168.1.16)没有PONG在3秒内收到!!! Traceback(最近一次调用最后一次): 在应用程序中输入第14行“/home/www/wsgi-websocket-2.py” makesock(env,start_response) 文件“/home/www/wsgi-websocket-2.py”,第32行,在makeock中 msg = uwsgi.websocket_recv_nb() IEError:无法接收websocket消息
即使客户端正在与服务器主动交换消息,也会发生这种情况。无论连接多么活跃,每次连接后都会死30秒。当我使用uwsgi.websocket_recv()时,这不会发生。
有关为何发生这种情况的任何线索以及如何减轻它以使连接无限期地保持打开状态?
由于