Если я вас правильно понимаю, вы хотите запустить getLastItemFromGivenInterval
в фоновом режиме и делать это каждые 60 секунд независимо от того, сколько времени потребуется для завершения.Вы можете заменить await
на create_task
, а затем никогда не ожидать результирующее задание:
loop = asyncio.get_event_loop()
while True:
# spawn the task in the background, and proceed
loop.create_task(bc.getLastItemFromGivenInterval(session))
# wait 60 seconds, allowing the above task (and other
# tasks managed by the event loop) to run
await asyncio.sleep(60)
Возможно, вы захотите также обеспечить выполнение задач, выполнение которых занимает много времени или зависание на неопределенное время (например, из-задо сбоя сети) не накапливать:
loop = asyncio.get_event_loop()
while True:
# asyncio.wait_for will cancel the task if it takes longer
# than the specified duration
loop.create_task(asyncio.wait_for(
bc.getLastItemFromGivenInterval(session), 500))
await asyncio.sleep(60)