【发布时间】:2014-07-16 07:42:51
【问题描述】:
在 Windows 上使用 Python 3.4.1,我发现在执行 asyncio event loop 时,我的程序不能被中断(即在终端中按 Ctrl+C)。更重要的是,SIGINT 信号被忽略。相反,我已经确定当不在事件循环中时会处理 SIGINT。
为什么执行异步事件循环时忽略 SIGINT?
下面的程序应该可以演示问题 - 在终端中运行它并尝试按 Ctrl+C 停止它,它应该继续运行:
import asyncio
import signal
# Never gets called after entering event loop
def handler(*args):
print('Signaled')
signal.signal(signal.SIGINT, handler)
print('Event loop starting')
loop = asyncio.SelectorEventLoop()
asyncio.set_event_loop(loop)
loop.run_forever()
print('Event loop ended')
请参阅官方(郁金香)邮件列表上的discussion。
【问题讨论】:
标签: windows signals python-3.4 event-loop python-asyncio