mirror of
https://github.com/pyrogram/pyrogram
synced 2025-09-01 23:05:15 +00:00
Improve idle() implementation
This commit is contained in:
@@ -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
|
||||||
|
Reference in New Issue
Block a user