бот pyrogram и websocket сервер? И возможно ли это? Вот пример https://pastebin.com/rNx5iTzt понимаю что запускаю бота pyrogram неправильно, как правильно не могу найти и понять
попробуй через таски https://docs.python.org/3/library/asyncio-task.html#creating-tasks
Спасибо почитаю!
Как понять в асинхронном режиме ?
Когда задачи выполняются одновременно не блокируя друг друга
Можно в докер композ завернуть или в разных процессах запускать . Модуль multiprocessing
Хотелось бы именно асинхронно сделать
А зачем тебе вообще пирограм? Вещь, так скажем, специфическая
Тоже самое могу сказать про дата классы
Я может специфику не понимаю: у тебя тг бот и веб сокет сервер. Как они взаимодействует
Не можешь :)
Почему бы для тгбота не взять обычную либу, работающую с ботапи
Я просто не понял откуда взялось что у него бот? Я не вижу даже в коде авторизации через токен
Тогда с чего ты решил, что датаклассы специфическая вещь и зачем вообще влез с этим в разговор?
Ну по моему мнению, а пирограмм даже я когда-то использовал для юзер бота
Юзербот это буквально нарушение правил использования аккаунтов. Для ботов акки создаются через botfather
Пытаюсь запихнуть в create_task(), вебсокет сервер добавляется и работает, pyrogram не хочет: https://pastebin.com/AnsQRBr3: выдает RuntimeWarning: coroutine 'Start.start' was never awaited self.start() RuntimeWarning: Enable tracemalloc to get the object allocation traceback Подскажите пож-та что делаю не так
подозреваю проблема в том что pyrogram запускается app = Client("ХХХХХХХХ") app.run() И его нельзя просто так добавить в task
Потому что бот апи это прослойка по факту более медленная чем mtprotoapi
Если авторизация прошла, для повторного подключения токен уже не нужен, достаточно имя сессии.
подозреваю проблема в том что pyrogram запускается app = Client("ХХХХХХХХ") app.run() И его нельзя просто так добавить в task. Но как сделать правильно не могу понять, подскажите пож-та
А как ты собираешься горизонтальное масштабирование делать с mtproto?
mtproto позволяет использовать много параллельных сессий для бота в отличие от ботапи. если ты про это
можешь дать совет как запустить код через таск?
Насколько я знаю, не позволяет. То есть попытаться можно, но телега не это реагирует не очень. Сам не проверял
Пойду спрошу у ребят
спроси пож-та если есть возможность как завернуть запуск такого кода в таск asyncio from pyrogram import Client app = Client("my_account") app.run()
https://t.me/tdlibchat/60877 Вот тут какое-то обсуждение двух сессий для бота. Судя по всему это не особо приветствуется и может не работать.
Так а действительно зачем тебе пирограм?
так на скрине ботапи. http прослойка перед mtproto. ботапи не позволяет мультисессии. я говорил про mtproto
Там дальше ещё какое-то обсуждение, но согласен явного ответа не видно
чтоб по mtproto работать с ботом ж))
Делать вам нечего :)
помогите запихнуть его старт в таск асинка))
Я все ещё считаю, что проще было взять bot api + aiohttp и посылать через него. Ковыряться в пирограме очень лениво, они там такое наворотил для асинкио что прям хз даже
мало функционала и медленно. уже смотрю на aiogram, он тоже умеет mtproto и вроде человеческий запуск через asyncio
Aiogram не умеет мтпрото, это именно ботапи
скорее наоборот насчет скорости, для мтпрото данные то ширфуются дополнительно
Нет. Ботапи это буквально клиент мтпрото, предоставляющий доступ к своим фичам по хттп
Ну вот в этом и медленно по идее. Даже не хочется тестить чесговоря
да, действительно. хабр обманул
То есть никаких замеров ты не делал?
Я бы предложил не ебать мозг с пирограмом, а взять аиограм. Будет более поддерживаемое решение, возможность масштабирования. А пирограм это скорее поиграться. Ты сессию даже между серверами таскать задолбаешься в реальном деплое
Нет. И не хочу) запросами пихать команды точно будет медленнее
Предлагаю тебе тогда пойти писать на си, а не питоне. Будет быстрее работать
start это асинк функция
Обсуждают сегодня