Loop Wrapper
LoopWrapper
нужен чтобы контролировать ивент луп для работы с asyncio
и хранить основные таски, startup
и shutdown
, которые будут исполнены только при запуске ивент лупа через run_forever
Таски
Вы можете создать таск так:
from vkbottle import LoopWrapper
async def my_task():
...
lw = LoopWrapper()
lw.add_task(my_task())
lw.run()
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())
lw.run()
interval
Легкий темплейт для создания тасков с бесконечно повторяющимися действиями в интервале. Пример:
from vkbottle import LoopWrapper
lw = LoopWrapper()
@lw.interval(seconds=10)
async def repeated_task():
print("I'll print this every 10 seconds!")
lw.run()
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()
Внимание
Если вы используете LoopWrapper
вместе с Bot
, то учтите, то Bot
уже имеет свой LoopWrapper
, который доступен по пути bot.loop_wrapper
и запускается при вызове bot.run_forever()