優雅的退出asyncio事件循環


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()

  


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM