Loop Wrapper
LoopWrapper
нужен чтобы контролировать ивент луп для работы с asyncio
и хранить основные таски, startup
и shutdown
, которые будут исполнены только при запуске ивент лупа через run_forever
Если вы установите loop_wrapper.auto_reload = True
, то программа будет автоматически перезагружаться при изменениях в кодe, чтобы указать путь до вашего кода воспользуйтесь auto_reload_dir
, по умолчанию он локален
Таски
Вы можете создать таск так:
from vkbottle import LoopWrapper
async def my_task():
...
lw = LoopWrapper()
lw.add_task(my_task())
on_startup и on_shutdown
on_startup
корутины запустятся перед запуском ивент лупа, on_shutdown
при остановке. В экземпляре LoopWrapper
они являются списками с корутинами, следовательно, добавлять их можно так:
from vkbottle import LoopWrapper
async def startup_task():
print("This is startup")
async def shutdown_task():
print("This is shutdown")
lw = LoopWrapper()
lw.on_startup.append(startup_task())
lw.on_shutdown.append(shutdown_task())
interval
Легкий темплейт для создания тасков с бесконечно повторяющимся действиями в интервале. Пример:
from vkbottle import LoopWrapper
lw = LoopWrapper()
@lw.interval(seconds=10)
async def repeated_task():
print("I'll print this every 10 seconds!")
timer
Легкий темплейт для создания отложенного таска:
from vkbottle import LoopWrapper
lw = LoopWrapper()
@lw.timer(seconds=10)
async def delayed_task():
print("I'll print this after 10 seconds!")
Запуск
lw.run_forever()