我有一个tornado应用程序,可以不断接收和处理来自10个websocket连接的websocket消息。程序将每1小时重新启动一次。我添加一行简单的代码:
ioloop.call_later(3600, ioloop.stop)让ioloop停止。
但我发现,有时程序会在应该调用ioloop.stop并退出时停顿4-5分钟。
我知道当停止ioloop时,打开的websocket没有被正确清理。实际上,当程序停止时,使用netstat我可以看到websocket连接仍然打开,recv-Q充满了消息。
所以我的问题是,是什么导致程序停止,为什么?提前谢谢。
发布于 2018-05-31 13:29:27
现在我知道答案了,因为我使用python ThreadPoolExecutor运行了一些阻塞操作,当python关闭时,它会一直等到所有的未来都被解决。
https://stackoverflow.com/questions/50600198
复制相似问题