меня он срабатывает сразу после запуска бота
@dp.callback_query_handler(run_task = print(20))
async def callback(query: types.CallbackQuery):
асинхронный принт, офигенно
там нужен именно асинх?
run_task подразумевает корутину, братан ты можешь сделать так: async def async_print(*args, **kwargs): print(*args, **kwargs) и юзать как run_task=async_print(20) тогда ты увидишь 20 в консоли только когда этот хэндлер запустится
ахахах, я понял думал не только корутину берет
ты можешь туда и обычную функцию пихать, но функция должна возвращать awaitable object
он выдает RuntimeWarning: Enable tracemalloc to get the object allocation traceback опять же при запуске бота
Это последствия
ковида?
У кого как
покажи что ты намутил
async def async_print(*args, **kwargs): print(*args, **kwargs) @dp.callback_query_handler( run_task = async_print(20)) async def process_callback(callback_query: types.CallbackQuery): await bot.answer_callback_query(callback_query.id)
а, да, это я накосячил потому что никогда не юзал run_task там оказывается True надо слать для долгих хэндлеров если у тебя в поллинге fast=False 🙄
ты про executor.start_polling ? не помогло
Не надо. Надо в хэндлере вызывать только нужную часть кода в таске. Сам хэндлер при этом все равно обычно содержит часть, которую надо выполнить при обработке
да не. если ты хочешь увидеть, что хэндлер сработал, просто поставь в начале print('сработал')
а зачем тогда run_task?
Есть какие-нибудь статьи для понимания event loop, а то я за него вообще не могу никак вкурить, не знаю на сколько это относится к теме ботов.
Есть задачка https://t.me/ru_python_beginners/1870620
таким же вопросом задаюсь
не парься, оно тебе пока не нужно
Не вижу никаких ограничений по редактированию, или там от тысячи?
Обсуждают сегодня