2
0
mirror of https://github.com/pyrogram/pyrogram synced 2025-09-01 23:05:15 +00:00

Improve idle() implementation

This commit is contained in:
Dan
2022-06-20 09:51:16 +02:00
parent b35810dc9f
commit 0a50520fc9

View File

@@ -23,8 +23,6 @@ from signal import signal as signal_fn, SIGINT, SIGTERM, SIGABRT
log = logging.getLogger(__name__) log = logging.getLogger(__name__)
is_idling = False
# Signal number to name # Signal number to name
signals = { signals = {
k: v for v, k in signal.__dict__.items() k: v for v, k in signal.__dict__.items()
@@ -71,18 +69,19 @@ async def idle():
asyncio.run(main()) asyncio.run(main())
""" """
global is_idling task = None
def signal_handler(signum, __): def signal_handler(signum, __):
global is_idling
logging.info(f"Stop signal received ({signals[signum]}). Exiting...") logging.info(f"Stop signal received ({signals[signum]}). Exiting...")
is_idling = False task.cancel()
for s in (SIGINT, SIGTERM, SIGABRT): for s in (SIGINT, SIGTERM, SIGABRT):
signal_fn(s, signal_handler) signal_fn(s, signal_handler)
is_idling = True while True:
task = asyncio.create_task(asyncio.sleep(600))
while is_idling: try:
await asyncio.sleep(1) await task
except asyncio.CancelledError:
break