Задать вопрос
  • Как можно связать программу с сайтом?

    fenrir1121
    @fenrir1121
    cvzxxd, для этого вам нужно нормально дополнить вопрос при помощи каких технологий написаны сайт и программа.
    Сейчас можно ткнуть в воздух и сказать что может подойдет Fastapi
    Написано
  • Как запустить dag airflow по сообщению в kafka?

    fenrir1121
    @fenrir1121
    Где код с вашим решением?
    В общем виде для решения есть пакет apache-airflow-providers-apache-kafka, как использовать провайдеры описано в документации.
    Написано
  • Динамическая + стачическая сортировка одновременно возможна?

    fenrir1121
    @fenrir1121
    Какой смысл вы вкладываете в слова "статическая" и "динамическая" в контексте сортировки?
    Написано
  • Как обойти лимит ТГ на количество ботов?

    fenrir1121
    @fenrir1121
    Drno, да предлагаю и авторизация тебе не нужна, у тебя пользователь уже однозначно идентифицирован по id.
    В базе соотносишь с id настройки пользователя, ключи API и любые другие вещи
    Написано
  • Как обойти лимит ТГ на количество ботов?

    fenrir1121
    @fenrir1121
    Научиться пользоваться бд чтобы было достаточно одного бота на всех пробовали?
    Написано
  • Как использовать Tracemalloc для оптимизации использования памяти?

    fenrir1121
    @fenrir1121
    @EugeneVKruglov
    Учитывая при этом, что в Линукс он ни в зуб ногой, поэтому Memray пока не подходит
    Вы сами пишите, что
    Бот развернут на сервере под Линукс (Дебиан 11)

    Если вы прочитали хотя бы по заголовкам возможности memray, там не нужно знать какие-то особенности линукса, все нужные команды даны в описании, только заменять my_script.py на ваш файл. Начните с Live mode режима.
    Написано
  • Какую архитектуру парсинга маркетплейса выбрать?

    fenrir1121
    @fenrir1121
    Александр Панков, а потом ваш заказчик разорится на проксях, когда маркетплейс начнёт их банить на таких масштабах.
    Так по описанию кликхаус должен хорошо подойти.
    Только вот реалистичности самой задачи сомневаюсь
    Написано
  • Как использовать Tracemalloc для оптимизации использования памяти?

    fenrir1121
    @fenrir1121
    EugeneVKruglov, в таком случае прочитайте про проблему молотка. Стоит спрашивать об изначальной проблеме, а не проблеме, которая возникла при попытке исправления
    Написано
  • Какую архитектуру парсинга маркетплейса выбрать?

    fenrir1121
    @fenrir1121
    Александр Панков, стек для хранения выбирается под задачу, а мы о задаче ничего не знаем. Начните с вопроса заказчику нужны все отзывы ЗАЧЕМ? В частности если нужно будет делать поиск по словам, вероятно нужен эластик или скажем qdrant, если аналитика по разным полям смотрите кликхаус и т д.
    Написано
  • Ошибка при удаление роли у пользователя disnake в чём проблема?

    fenrir1121
    @fenrir1121 Куратор тега discord.py
    Miwa122op1, не бывает трейса без ошибки. Конкретно remove_roles может дропать 2 вида ошибок:
    - Forbidden, если недостаточно прав,
    - HTTPException, если ошибка произошла при вызове апишки дискорда.
    Написано
  • Ошибка при удаление роли у пользователя disnake в чём проблема?

    fenrir1121
    @fenrir1121 Куратор тега discord.py
    Прикладывайте ошибку целиком
    Написано
  • Как сделать проверку на упоминание участника и числа?

    fenrir1121
    @fenrir1121 Куратор тега discord.py
    dvrr, через префикс сами проверяйте тип приходящих объектов и занимайтесь их конвертацией.
    Написано
  • Как решить disnake.ext.commands.errors.CommandInvokeError: Command raised an exception: AttributeError: 'str' object has no attribute 'astimezone'?

    fenrir1121
    @fenrir1121 Куратор тега discord.py
    Перестаньте спамить создавая новые вопросы. Вам задали разумные вопросы в прошлом вопросе, вы не отвечая на них плодите новый.

    Проблема решается отключением перехвата ошибок на уровне библиотеки и чтением полного трейса ошибки.
    Написано
  • Как запустить несколько ботов в докере?

    fenrir1121
    @fenrir1121
    Paymir121,
    Пока отрабатываю вариант, что запускаю n процессов, с вечным ожиданием изменений общей переменой
    Для отдельных процессов не существует общих переменных. Новый процесс содержит свое пространство памяти.
    Для общения необходимо использовать очереди, каналы или иной вид взаимодействий.
    Написано
  • Как работает запуск корутин в asyncio?

    fenrir1121
    @fenrir1121
    3FANG,
    Мы переходим в функцию sleep(), там она стопится, т.е. входит в состояние ожидания результата, контроль выполнения возвращается в функцию waste_time()
    . Сразу нет. Мы не возвращаемся в waste_time.
    Смотрите, все что делает await - проверяет выполнение и не дает выполняться последующему коду, пока объект сопрограммы не будет завершен.

    Давайте рассмотрим в каком порядке выполняется ваш код:
    1) Создаем 10 тасок, затем заходим во второй цикл, печатаем слово "старт" и затем натыкаемся на await
    2) Теперь пока он не вернет значение. мы переходим к другой задаче в цикле событий
    3) Мы попадаем в случайную таску, печатаем Start work..., затем натыкаемся на await, теперь пока он не вернет значение. мы переходим к другой задаче в цикле событий
    ...
    12) Как только в каждой задаче завершается выполнение sleep печатается End work!, а объект сопрограммы помечается как завершенный. Отмечу, он все еще существует, просто помечен что он завершен и может вернуть результат (в твоем случае None).

    13) Тут нам могло повезти и если первой выполнялась первая же задача она могла бы напечатать "финиш" до того как прошли все End work!
    14) Дальше цикл проходит еще по 9 задачам, но await task ничего не делает, потому что весь код в них уже ранее выполнился, а сами они ничего не возвращают.

    Попробуй вот такую модернизацию, может так станет понятнее
    async def waste_time(i):
        print(f"Start {i} work...")
        await asyncio.sleep(2)
        print(f"End {i} work!")
        return i  // затем попробуй убрать этот return
    
    async def main():
        tasks = []
        for i in range(1, 10):
            task = asyncio.create_task(waste_time(i))
            tasks.append(task)
        
        for task in tasks:
            print('start')
            print(f'task: {await task}')
            print('end')
    Написано
  • Как работает запуск корутин в asyncio?

    fenrir1121
    @fenrir1121
    3FANG,
    Разве он не должен идти в таком порядке
    Нет не должен.
    У тебя создается 10 задач, которые одновременно ожидают 2 секунды, после этого ты заходишь во второй цикл, пишешь старт и ожидаешь пока первая задача завершится. Сразу за ней заканчивают выполнение все остальные задачи и пишут свой текст, после чего ты еще 9 кругов гоняешь цикл с уже выполненными задачами. await отпускает цикл выполнение и позволяет переключиться на другую задачу в цикле, но все задачи уже завершены так что он ничего не делает
    Написано
  • Где найти открытую или спарсить БД туристических (коричневых) знаков, которые стоят повсеместно на дорогах?

    fenrir1121
    @fenrir1121
    Судя по этой статье предположу что их делает руководство подобных мест и единой базы просто нет. Вот компания, которая их делает под заказ, может получится с ними договориться и взять у них имеющиеся наработки.
    Написано
  • При запуске import discord выдает ошибку, как исправить?

    fenrir1121
    @fenrir1121 Куратор тега discord.py
    Вероятно вы это делали в виртуальной среде. Или за вас ее запускал pycharm
    Написано
  • Как запустить несколько ботов в докере?

    fenrir1121
    @fenrir1121
    Paymir121, она работает до первых вычислительных задач. Потоки в питоне выполняются внутри одного процесса при помощи переключения между ними. Любые операции занимающие много времени заставят другие потоки ожидать освобождения GIL'а. Да этот тот самый случай, когда GIL на что-то влияет.

    У вас бонусом еще намешаны потоки и асинхронщина, так что получается вообще лютый коктейль.
    Написано
  • Как запустить несколько ботов в докере?

    fenrir1121
    @fenrir1121
    Paymir121, текущая логика в репе нормально работать не будет никогда. Вы пытаетесь запускать ботов внутри одного процесса. Мало того что такой запуск не предусмотрен используемой библиотекой, выполнение любых вычислений в одном боте, будет подвешивать всех остальных.
    Как ниже отписано в другом ответе для подобной логики нужен мультипроцессинг, либо боты должны разворачиваться независимо, а над ними должен быть оркестратор. В общем не зачет вашему айти-акселератору, пусть объясняют про потоки, асинхронность и процессы, вы пока пытаетесь зайти в дом через дымоход.
    Написано