Я хочу сделать декоратор для моего проекта, который будет запускать каждые x секунд определенную задачу по телетону.
Я спросил в группе по телетону, и кто-то дал мне небольшой декоратор, но проблема здесьзаключается в том, что мне нужно запустить цикл с помощью run_until_complete
, и я уже использую его при запуске клиента.Вот мой код:
def periodic(period):
def scheduler(fcn):
async def wrapper():
while True:
asyncio.ensure_future(fcn())
await asyncio.sleep(period)
return wrapper
return scheduler
@periodic(2)
async def do_something():
await asyncio.sleep(5) # Do some heavy calculation
me = await client.get_me()
print(me.stingfy())
Теперь у меня уже есть цикл, работающий в main :
if __name__ == "__main__":
async def start():
await client.start()
await client.get_me()
await client.run_until_disconnected()
loop = asyncio.get_event_loop()
loop.run_until_complete(start())
, и я не могу запустить другой цикл, потому что если ясделать это, кажется, чтобы закрыть это.Любые идеи о том, как сделать эту работу?