diff --git a/asterisk_ami.py b/asterisk_ami.py index dbab6c3..c38a536 100644 --- a/asterisk_ami.py +++ b/asterisk_ami.py @@ -1,6 +1,5 @@ import asyncio from datetime import datetime -import os import socket import aiofiles import call_handler @@ -38,6 +37,8 @@ async def full_log(event): async def ami_listening(): + callhandler = call_handler.CallHandler() + # процедура регулярной проверки соединения async def check_connection(): while True: @@ -53,6 +54,18 @@ async def ami_listening(): conn_check_task = asyncio.create_task(check_connection()) conn_check_task.add_done_callback(lambda t: ami_listening() if t.result() else None) + # запуск check_pending ежедневно в 23:00 + async def daily_check_pending(): + while True: + now = datetime.now() + if now.hour == 23 and now.minute == 0 and now.second < 5: + await callhandler.check_pending() + await asyncio.sleep(60) + else: + await asyncio.sleep(1) + + daily_check_pending_task = asyncio.create_task(daily_check_pending()) + while True: try: s = socket.socket(socket.AF_INET, socket.SOCK_STREAM) @@ -75,8 +88,6 @@ async def ami_listening(): events_action = "Action: Events\r\nEventMask: on\r\n\r\n" send_action(s, events_action) - callhandler = call_handler.CallHandler() - try: while True: event = send_action(s, "") @@ -87,6 +98,7 @@ async def ami_listening(): except (KeyboardInterrupt, SystemExit): logging.info("Exiting...") s.close() + daily_check_pending_task.cancel() except ConnectionResetError: logging.warning("Connection reset. Restarting...") await ami_listening() diff --git a/check_pending.py b/check_pending.py deleted file mode 100644 index 24d3339..0000000 --- a/check_pending.py +++ /dev/null @@ -1,14 +0,0 @@ -import asyncio -import call_handler - - -callhandler = call_handler.CallHandler() - - -async def mailn(): - await callhandler.check_pending() - return - - -if __name__ == "__main__": - asyncio.run(mailn()) diff --git a/check_pending.sh b/check_pending.sh deleted file mode 100755 index fda6749..0000000 --- a/check_pending.sh +++ /dev/null @@ -1 +0,0 @@ -/medods_crz/.venv/bin/python /medods_crz/check_pending.py \ No newline at end of file