Вы можете использовать asyncio.sleep
Для Python <3,7 </p>
import asyncio
def get_data():
print("Getting data")
async def main():
while true:
get_data()
await asyncio.wait(MINUTE)
loop = asyncio.get_event_loop()
loop.run_until_complete(main())
Для Python 3,7 +
import asyncio
def get_data():
print("Getting data")
async def main():
while true:
get_data()
await asyncio.wait(60)
#This is the only thing that changes
asyncio.run(main)
edit
Согласно вашему комментарию, если вы действительно беспокоитесь о том, чтобы этот вызов вызывался каждые 60 секунд.
Вы могли бы реализовать способ потратить время до get_data
вызывается и вычитается из 60, просто нужно убедиться, что get_data
занимает более 60 секунд, чтобы ждать 0 секунд или нет вовсе.
Что-то вроде этого для вашего main()
должно работать:
#make sure to:
import time
async def main():
while true:
t = time.time()
get_data()
time_diff = int(time.time() - t)
await asyncio.wait(max(60 - time_diff, 0))