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



我有一个使用Websocket和Gevent的Python应用程序。在我的个人经验中,这是一个很大的应用。

我遇到了一个问题:当我在Windows上运行它时(使用'Pipenv Run Python MyApp'(,它可以(突然但非常漫长的(冻结,并停止接受消息。如果我然后输入 ctrl c 在cmd中,它开始对所有消息进行反应,这些消息是在悬挂时发出的。

我明白,它可能会阻止某个地方,但是我不知道如何调试这些错误类型,因为我在代码中看不到任何东西,可以做到这一点。而且它很快就会在应用程序运行时完全不同的阶段。

调试的最佳方法是什么?并实际看到幕后发生的事情?我的日志没有任何问题。

CMD可能是错误的,而不是我的应用程序?

您的答案可能很简单,就像将超时添加到您的某些产卵或gevent调用中一样简单。GEVENT仍然是单线线程,因此,如果IO绑定的资源悬挂,则无法在收到上下文之前进行上下文切换。设置超时可能有助于绕过这些问题并将您的应用转发?

相关内容

最新更新