Планирование периодического вызова функции в Quart/asyncioPython

Программы на Python
Anonymous
Планирование периодического вызова функции в Quart/asyncio

Сообщение Anonymous »

Мне нужно запланировать периодический вызов функции в Python (т. е. вызывать каждую минуту), не блокируя цикл событий (я использую платформу Quart с asyncio).
По сути это необходимо отправить работу в цикл событий с помощью таймера, чтобы веб-сервер тем временем продолжал обслуживать входящие запросы примерно каждую минуту, когда он вызывает мою функцию.
Я пробовал много способов, например :

Код: Выделить всё

def do_work():
print("WORK", flush=True)

async def schedule():
await asyncio.sleep(0)
print("scheduling")
loop = asyncio.get_running_loop()
t = loop.call_later(2, do_work)
print("scheduled")

asyncio.run(schedule())
Но он либо никогда не выполняется (как код выше), либо блокирует основной цикл событий веб-сервера. Например, с помощью приведенного выше кода я ожидал бы (поскольку это делается в asyncio.run и Schedule ожидает таймера), что «расписание» будет напечатано после (или во время) настройки сервера, но это не так. в случае, он блокируется.

Подробнее здесь: https://stackoverflow.com/questions/700 ... rt-asyncio

Вернуться в «Python»