• Не настраиваются разные уровни логирования в python logging?

    @Paymir121
    Советую выделить логгер в отдельный класс, то какой то микс, а там уже мутишь приколы свои
    py_logger: Logger = Logger(__name__)
    
    class Logger(logging.Logger):
        """
        Класс Logger для настройки логирования;
        """
    
        def __init__(self, name: str, log_file: str = None) -> None:
            """
            Инициализация экземпляра класса Logger;
            """
    
            super().__init__(name)
    Написано
  • Как привязать значение переменной к строчке/столбцу в эксель чтобы получить значение ячейки?

    @Paymir121
    Во первых, укажи используемые Либы. Во вторых, код оформи как питоновский код. В третьих, полный код и задачу
    Написано
  • Fastapi+django контейнеры в docker-compose, как соединить?

    @Paymir121 Автор вопроса
    короче, проксирование по порту было не правильное
    Написано
  • Fastapi+django контейнеры в docker-compose, как соединить?

    @Paymir121 Автор вопроса
    Everything_is_bad, django синхронный, но он только интерфейс, у него и нагрузки не должно быть)
    показываю именно место ошибки, это точно!
    Нет, не пробовал, честно не подумал, но пойду гуглить как делать! Спасибо на наводку, надеюсь найду причину и отпишусь
    Написано
  • Fastapi+django контейнеры в docker-compose, как соединить?

    @Paymir121 Автор вопроса
    При этом если локально запустить, то проблемы не было. и уже явно начал указывать УРЛ
    @action(
    methods=["GET"],
    detail=True,
    url_name="start_bot",
    permission_classes=(AllowAny,),
    )
    def start_bot(self, request, *args, **kwargs) -> Response:
    requests.get(f"bot_server:8001/202/start")
    return Response(
    data={"detail": "Бот успешно запущен"}, status=status.HTTP_200_OK
    )
    Написано
  • Как запустить несколько ботов в докере?

    @Paymir121 Автор вопроса
    fenrir, под переменой я имел в виду multiprocessing.Value('i', 0), она работает как общая переменная для процессов. Чувствую что херню делаю полную и надо уже к кубернетису обратится(
    Написано
  • Как запустить несколько ботов в докере?

    @Paymir121 Автор вопроса
    Это самый правильный вариант, но для него нужно 1) брокер очередей 2) оркестрацию контейнеров. Я пока совсем слаб в этих вещах. Если не получиться с многопроцессоностью, буду переходить на 1 бот - 1 контейнер и плакать в подушку
    Написано
  • Как запустить несколько ботов в докере?

    @Paymir121 Автор вопроса
    сделал на многопроцессорности: https://github.com/modular-platform-it/backend/blo...
    все работает. Пока отрабатываю вариант, что запускаю n процессов, с вечным ожиданием изменений общей переменой( которое должно происходить в fastapi процессе) и если оно произойдет происходит запуск выбранного бота( пока сам механизм Query не выработан, так что только один скромный бот)
    Вопрос, а как можно запустить эти новые n+ процессы прямо из fastapi процесса, без костылей в виде предзапущенных процессов?
    Написано
  • Как запустить несколько ботов в докере?

    @Paymir121 Автор вопроса
    fenrir, Хорошо, понял, буду пробовать выстраивать многопроцессную архитектуру. К такому жизнь меня пока не готовила... Aiogram и fastapi сами по себе ассинхроны, так что коктейль я варю лютый)
    Написано
  • Как запустить несколько ботов в докере?

    @Paymir121 Автор вопроса
    fenrir, акселератор это чисто объединение 20 младых лбов, что бы сделать интересный проект. Помощи нет от акселератора, только ревью кода на наличие говнокода. В этом и смысл его, что бы создавать новое и набраться опыта в тех вещах которые реально необходимы в дальнейшем. Главное пробовать попасть в дом, хоть через дымоход) Ну это отступление небольшое

    Если "текущая логика в репе нормально работать не будет никогда", то как тогда она работает на винде/маке без докера. Возможно при создании нового экземпляра класса BaseTelegramBot, питон как то сам распараллеливает все вычисления? Тогда почему в контейнере докера это не канает
    вчера пробовал на thread переписать, но докеры выдает ту же ошибку.
    Примерный код:
    bot = BaseTelegramBot(bot_data=bot_data)
        bot_thread = threading.Thread(target=bot.run_bot)
        bot_thread.start()
    
    class BaseTelegramBot:
        def __init__(self, bot_data):
            super().__init__()
            self.bot = Bot(token=self.token)
            self.dispatcher = Dispatcher()
    
        def run_bot(self):
            loop = asyncio.new_event_loop()
            asyncio.set_event_loop(loop)
            loop.run_until_complete(self.start())
            loop.close()
    
        async def start(self):
            await self.dispatcher.start_polling(self.bot)

    и второй вариант на thread, ошибка в докере аналогичная
    with concurrent.futures.ThreadPoolExecutor() as executor: 
            executor.submit(bot.start)

    Завтра буду пробовать переписыванием все на мультипроцессы и запустить.
    Сегодня DockerHub дал прикурить)
    Написано
  • Как запустить несколько ботов в докере?

    @Paymir121 Автор вопроса
    Everything_is_not_so_bad,
    FROM python:3.12-slim
    
    ENV POETRY_VERSION=1.8.2
    
    ENV POETRY_HOME=/opt/poetry
    ENV POETRY_VIRTUALENVS_CREATE=false
    ENV PATH="$POETRY_HOME/bin:$PATH"
    
    ENV PYTHONUNBUFFERED=1
    ENV PYTHONDONTWRITEBYTECODE=1
    
    RUN apt-get update && apt-get install --no-install-recommends -y curl \
    	&& curl -sSL https://install.python-poetry.org | python3 - --version ${POETRY_VERSION} \
    	&& apt-get purge --auto-remove -y curl \
    	&& rm -rf /var/lib/apt/lists/*
    
    WORKDIR /app
    
    COPY . .
    
    RUN apt-get update && apt-get install --no-install-recommends -y build-essential  \
    	&& poetry install --no-root --only main \
    	&& apt-get purge --auto-remove -y build-essential \
    	&& rm -rf /var/lib/apt/lists/*
    
    CMD ["python", "db.py"]
    CMD ["python", "test_data.py"]
    CMD ["uvicorn", "api:app", "--proxy-headers", "--host", "0.0.0.0", "--port", "8000"]
    Написано
  • Как запустить несколько ботов в докере?

    @Paymir121 Автор вопроса
    Да, в одном контейнере, задача проекта запуск и редактирование n+ ботов на сервере.
    Общение между ботами не нужно, но как сущности они должны быть запущенны отдельно.
    На винде и на Маке, без докера запускается все отлично, но как только запуск происходит в контейнере то выдается ошибка.
    Пробовал запустить код в многопоточном режиме используя threading, но ошибка таже
    Написано