码迷,mamicode.com
首页 > 其他好文 > 详细

优雅的退出asyncio事件循环

时间:2019-05-23 21:15:03      阅读:336      评论:0      收藏:0      [点我收藏+]

标签:signal   highlight   hand   handle   信号   loop   handler   fun   term   

import asyncio
import functools
import os
import signal

"""
信号值      符号      行为

2          SIGINT    进程终端,CTRL+C

9          SIGKILL   强制终端

15         SIGTEM    请求中断

20         SIGTOP    停止(挂起)进程 CRTL+D
"""


def exit(sign_name):
    print(f"获取信号{sign_name}: exit")
    loop.stop()


loop = asyncio.get_event_loop()
for sign_name in (‘SIGINT‘, ‘SIGTERM‘):
    loop.add_signal_handler(getattr(signal, sign_name),
                            functools.partial(exit, sign_name))

print(" Ctrl+C 停止运行.")
print(f"pid {os.getpid()}: 发送 SIGINT 和 SIGTERM 信号退出循环")
try:
    loop.run_forever()
finally:
    loop.close()

  

优雅的退出asyncio事件循环

标签:signal   highlight   hand   handle   信号   loop   handler   fun   term   

原文地址:https://www.cnblogs.com/c-x-a/p/10914179.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!