我有一个在无限循环上运行的python脚本。在循环中,会发生多进程和异步函数,所以通常我会捕获KeyboardInterrupt来正确地杀死所有进程。
不知怎么的,在其中一个循环上使用类似的代码,我无法捕捉到循环继续运行的KeyboardInterrupt。
逻辑是这样的:
try:
while True:
do stuff
except (KeyboardInterrupt, SystemExit):
exit cleanly正常情况下我会怀疑是一次地毯式的尝试。除了子函数中的某个地方,但我检查了整个代码库,虽然有很多错误,但捕获的所有内容都是特定的。
有没有一种方法可以跟踪错误并以某种方式找出KeyboardInterrupt被捕获的位置?
谢谢
*调试后编辑...所以我一部分一部分地禁用了代码,直到我解决了这个bug:在代码中的某个地方,我调用了一个缺少self且没有标记为@staticmethod的方法。
改变这一点解决了我的问题。
发布于 2020-10-03 00:05:54
这对我很有效。
try:
while True:
print(1)
except KeyboardInterrupt:
raise编辑:实际上读了你的问题,我不能告诉你为什么它没有在没有看到其余或更多代码的情况下引发错误。
https://stackoverflow.com/questions/64174680
复制相似问题