Python应用程序冻结,只有CTRL-C有帮助

时间:2018-03-30 10:14:52

标签: python websocket gevent

我有一个使用websockets和gevent的Python应用程序。在我个人的经历中,这是一个非常重要的应用。

我遇到了一个问题:当我在Windows上运行它时(用#pi; pipenv运行python myapp'),它可以(突然但非常狂热地)冻结,并停止接受消息。如果我然后在cmd中输入 CTRL + C ,它会开始对挂起时发出的所有消息做出反应。

我理解,它可能会阻塞某个地方,但我不知道如何调试这些类型的错误,因为我在代码中看不到任何可以做到的事情。在应用程序运行时的完全不同阶段,它会非常激动地发生。

调试它的最佳方法是什么?实际上看看幕后会发生什么?我的日志显示没有问题的迹象。

使用cmd而不是我的应用可能是错误吗?

1 个答案:

答案 0 :(得分:0)

您的答案可能就像为某些产品或gevent电话添加超时一样简单。 Gevent仍然是单线程的,因此如果IO绑定资源挂起,它就无法上下文切换,直到它被收到。设置超时可能有助于绕过这些问题并推进您的应用程序?