python asyncio как запустить/выполнять код с периодичностью
Как выполнять код для асинхронной функции с некоторой периодичностью (раз в сутки например).
PS: или только тупо задать в том же коде while True: await.sleep(условно 60) или есть иной способ более правильный ?
async def checking_expirate_date():
"""Запуск проверки дат экспирации для счета
при расрочки текушей даты от даты экспирации для данного счета выход из программы"""
current_day = datetime.today().isoweekday() # текущий день недели (№ дня недели)
working_days = [1, 2, 3, 4, 5]
if current_day not in [working_days]:
now = datetime.now()
my_expire_date = check_expire_date(url="http://xxx.xx.xxx", account_numer=str(login))
my_date = datetime.fromisoformat(my_expire_date) # convert str_date to datetime_format
await asyncio.sleep(3)
if now < my_date:
logger.info(f"now data: {now}, my_date: {my_date}")
elif now > my_date:
sys.exit()
asyncio.run(checking_expirate_date()) # как задать периодичность запуска функции
Ответы (1 шт):
Автор решения: eri
→ Ссылка
Чем проще тем лучше:
async def checking_task():
while True:
await asyncio.sleep(1)
await checking_expirate_date()
loop = asyncio.get_event_loop()
loop.create_task(checking_task())
loop.run_forever()