В данном руководстве для получения погоды используется синхронный клиент. Соответственно, пока бот ждёт ответа от сервиса погоды, асинхронное приложение БЛОКИРУЕТСЯ и не обрабатывает другие сообщения. Используйте асинхронный клиент для избежания блокировок. В aiogram мы используем aiohttp.
Запросы к API лучше кэшировать. Если у вас пользователь дёргает погоду 30 раз в секунду, то нагружать API не имеет смысла, просто отдайте пользователю предыдущий результат.
Сервис погоды может быть временно недоступен и ваше приложение к этому не готово. Используйте backoff и допишите сценарий отказа пользователю.
В aiogram мы добавили много удобных шорткатов, например отвечать на callback query можно так: callback_query.answer()
Держать config.py в репозитории - не очень хорошая практика. Если хочется именно такой формат конфигурации оставить, то в репозиторий приложите пример (с другим именем), а ваш пользователь уже скопирует его в config.py. Сам config.py добавьте в ignore, чтобы он не попадал в git.
Очень просто. Не так давно в телеграм появились запросы на вступление. Получая такой запрос, бот может написать пользователю в ЛС, выдать капчу и только после прохождения подтвердить заявку на вступление.
То, что отличий много - понятно. На мой взгляд остался не раскрыт профит от использования всего этого добра. Замена настроек логирования в рантайме - очень специфичная задача, больше похожая на костыль, чем на повседневную потребность. Блю-грин никто не отменял.
Т.е. прочитав статью, я остался при мнении, что в случае необходимости валидации я возьму pydantic, а в случае необходимости неблокирующего logging возьму пример из документации. А хотелось бы зайти в статью, найти что-то полезное и унести с собой ))
Прочитал тезис про "красиво" - спорить не буду. Но хочется посмотреть на тесты производительности - это была одна из причин отказа от loguru и возврат к обычному logging
loguru - прекрасная? От неё больше проблем, чем пользы... Начните хотя бы с тестирования производительности
Сноска от авторов про "10x faster" давно зачёркнута с припиской "In an upcoming release, Loguru's critical functions will be implemented in C for maximum speed.", но этот upcoming release уже давно не может произойти )
Если вопрос в обычных сообщениях, убедитесь, что у бота ВЫКЛЮЧЕНА приватность или выданы права администратора. Если вопрос в упоминаниях, то надо дебажить aiogram - спросите в чате, помогут
В п.12 отличная лекция по проблемам asyncio. Не понял только историю с самопальной реализацией файлового менеджера на тредах, при здравствующем aiofile, который умеет работать с файлами асинхронно.
Там боль в том, что HTML-приложение работает на стороне пользователя и можно делать с результатами что угодно. Любая HTML игра, которую я видел в телеграм, ломается в отличие о игр в ботах (True Mafia например), где пользователю код на устройство не загружается
Рекомендую дополнить:
Лимиты можно увеличить для популярных ботов, при двух условиях:
1. Бот будет забывать про сообщения старше недели. Т.е. получая CallbackQuery из такого сообщения, вы не сможете получить объект Message.
2. Владелец обязуется не использовать смягчение лимитов для рассылок, в обратном случает лимиты вернут
И в ту же копилку цитат от автора: "[asyncpg] Всего в 2 раза лучше, чем psycopg2"
Я больше 5 лет арендую серверы у другой российской компании
Локация: Амстердам
16 CPU 3.4 GHz
16 GB RAM
50 Gb nve/ssd/hdd
Ваш калькулятор: 9940 ₽ / месяц
Калькулятор другой компании: 6858 ₽ / месяц
Калькулятор hetzner (соседняя локация, но доп. 16 GB RAM сверху): 5 386 ₽ / месяц
Почему я должен переехать к вам? :)
Ещё один готовый набор для кафки:
https://github.com/confluentinc/cp-all-in-one
Где-то плачет один Гвидо со своим:
Теперь проблема решается с помощью ruff
Настройки:
Кэшировать можно в память или в специальные хранилища (при необходимости), как вариант - aiocache.
Для конфига я чаще всего использую pydantic.
Ответ на callback_query не подразумевает наличие клавиатуры, не путайте с ответом на сообщение
В данном руководстве для получения погоды используется синхронный клиент. Соответственно, пока бот ждёт ответа от сервиса погоды, асинхронное приложение БЛОКИРУЕТСЯ и не обрабатывает другие сообщения. Используйте асинхронный клиент для избежания блокировок. В aiogram мы используем aiohttp.
Запросы к API лучше кэшировать. Если у вас пользователь дёргает погоду 30 раз в секунду, то нагружать API не имеет смысла, просто отдайте пользователю предыдущий результат.
Сервис погоды может быть
временнонедоступен и ваше приложение к этому не готово. Используйте backoff и допишите сценарий отказа пользователю.В aiogram мы добавили много удобных шорткатов, например отвечать на callback query можно так:
callback_query.answer()
Держать
config.py
в репозитории - не очень хорошая практика. Если хочется именно такой формат конфигурации оставить, то в репозиторий приложите пример (с другим именем), а ваш пользователь уже скопирует его вconfig.py
. Сам config.py добавьте в ignore, чтобы он не попадал в git.Ровно так и происходит. Весной Монго написал что-то про корабль и удалил мой облачный инстанс...
Очень просто. Не так давно в телеграм появились запросы на вступление. Получая такой запрос, бот может написать пользователю в ЛС, выдать капчу и только после прохождения подтвердить заявку на вступление.
То, что отличий много - понятно. На мой взгляд остался не раскрыт профит от использования всего этого добра. Замена настроек логирования в рантайме - очень специфичная задача, больше похожая на костыль, чем на повседневную потребность. Блю-грин никто не отменял.
Т.е. прочитав статью, я остался при мнении, что в случае необходимости валидации я возьму pydantic, а в случае необходимости неблокирующего logging возьму пример из документации. А хотелось бы зайти в статью, найти что-то полезное и унести с собой ))
Прочитал тезис про "красиво" - спорить не буду. Но хочется посмотреть на тесты производительности - это была одна из причин отказа от
loguru
и возврат к обычномуlogging
loguru
- прекрасная? От неё больше проблем, чем пользы... Начните хотя бы с тестирования производительностиСноска от авторов про "10x faster" давно зачёркнута с припиской "In an upcoming release, Loguru's critical functions will be implemented in C for maximum speed.", но этот upcoming release уже давно не может произойти )
Хотелось бы в статье видеть некий сравнительный анализ:
Чем не устраивает валидация в pydantic?
Чем не устраивают неблокирущие примеры logging из документации python? (там есть варианты и с мультипроцессингом, и с тредами)
Оу, действительно, неправильно воспринял описание фичи про 2.0.0.
В любом случае, спасибо и за библиотеки, и за видео :)
Если вопрос в обычных сообщениях, убедитесь, что у бота ВЫКЛЮЧЕНА приватность или выданы права администратора. Если вопрос в упоминаниях, то надо дебажить aiogram - спросите в чате, помогут
Всё ещё проще,
aiofile
не умел работать без тредов, когда записывалась эта лекция :)В п.12 прикреплено неправильное видео. Замените на вот это: https://www.youtube.com/watch?v=FFUYf8FHDlY
В п.12 отличная лекция по проблемам asyncio. Не понял только историю с самопальной реализацией файлового менеджера на тредах, при здравствующем aiofile, который умеет работать с файлами асинхронно.
Рекомендую дополнить:
Лимиты можно увеличить для популярных ботов, при двух условиях:
1. Бот будет забывать про сообщения старше недели. Т.е. получая CallbackQuery из такого сообщения, вы не сможете получить объект Message.
2. Владелец обязуется не использовать смягчение лимитов для рассылок, в обратном случает лимиты вернут
youtrack.jetbrains.com/issue/DBE-283
* ему уже 6 лет, если чо