运行此代码
import gevent
def f():
while True:
gevent.sleep(1)
if __name__ == '__main__':
tasks = (gevent.spawn(f),)
try:
gevent.wait(tasks)
except KeyboardInterrupt:
print("KeyboardInterrupt trapped")然后按一个Ctrl,给我输出:
$ python receiver.py
^CKeyboardInterrupt
Tue Aug 8 00:56:04 2017
KeyboardInterrupt trapped为什么?
似乎有人在写输出的退出时间。
如何防止第一行中的KeyboardInterrupt和第二行中的日期?
发布于 2018-04-18 10:29:37
这些消息是由gevent集线器打印的,它正在拦截正在引发的KeyboardInterrupt。通常,您将看到一个跟踪,而不是只看到KeyboardInterrupt和当前日期,但由于集线器是特殊的,您将得到该输出。
解决这个问题有两种方法:
gevent.wait()的调用不会停止。您可以使用的唯一两个异常是SystemExit和GreenletExit (这是上面NOT_ERROR列表中的两个默认异常):任何其他异常都将导致that在标准错误上打印某些内容。https://stackoverflow.com/questions/45556949
复制相似问题