• Как вернуться в for in на место где закончился перебор после выхода из функции?

    @rodion4dev
    Если отвечать на вопрос, ответ - никак.

    Но если я верно понял задачу, которую Вы перед собой поставили, то предлагаю следующий вариант:
    cities = {"Москва", "Самара", "Краснодар"}
    
    
    def get_proxy():
        return ""
    
    
    def process_cities(proxy):
        # Логика обработки городов
        for city in cities:
            print(city)
            print(proxy)
    
    
    def process():
        loop_number = 0
        proxy = get_proxy()
    
        while True:
            loop_number += 1
    
            if loop_number == 4:
                proxy = get_proxy()
                loop_number = 0
    
            process_cities(proxy)
    
    
    if __name__ == "__main__":
        process()
    Ответ написан
    Комментировать
  • Как добавить значение к полю models.form django?

    @rodion4dev
    Решение: поля сделать необязательными, переопределить ModelMultipleChoiceField, сделать свою реализацию метода to_python(), и, если метод родителя вернул пустой список, - при переопределении вернуть list(QuerySet.all()) нужного объекта. Должно сработать.
    Ответ написан
    Комментировать
  • Flask api Mongo db 'NoneType' object has no attribute 'user' в чем проблема?

    @rodion4dev
    Из документации
    629748d7f20dc091027706.png


    То есть в Вашем случае в базе данных под названием db указываемая коллекция user отсутствует. Решение - создать коллекцию вручную.
    Ответ написан
    1 комментарий
  • Как отправить через celery, свой созданный объеку и запустить его в rabbit celer?

    @rodion4dev
    Нужно реализовать собственный json.JSONEncoder с переопределением метода encode, который будет определять передаваемый объект, и, если он является объектом класса ServiceTTS, сериализовать данные этого объекта в простейший тип. Собственную реализацию json.JSONEncoder'а нужно указать в настройках Celery задачи; ровно так же, как собственно-реализованный json.JSONDecoder, который получит на вход простейшие данные и превратит их в объект класса ServiceTTS.

    Но если Вы встали перед необходимостью "передать собственный объект через Celery", значит в вашей архитектуре что-то не так. И я предлагаю Вам не прибегать к реализации энкодера и декодера и подготавливать данные до постановки задачи в Celery.
    Ответ написан
    Комментировать
  • Как в контексте синхронной джанги заставить channels отправлять сообщения в реальном времени?

    @rodion4dev
    Привет

    Ответ на основной вопрос - да, можно. Но придётся понять для себя как работает эта связка Django + Channels, чтобы данные по каналу с сервера отправлялись асинхронно.

    Если вкратце: подключить channels_redis, в своём Consumer'е реализовать метод-обработчик, который будет получать извне данные и отправлять их в действующий websocket канал, и реализовать постоянно-работающую службу (в зависимости от того как вы отправляемые данные подготавливаете; например, celery worker), которая, подготовив данные, отправит их через group_send(), который, в свою очередь, положит данные в Redis, а Consumer, с обратной стороны, вытащит их и передаст в тот самый метод-обработчик.

    Сперва голова кругом от такой логики, но всё очень продуманно и нужно только время на понимание процессов.
    Ответ написан
    1 комментарий
  • Почему docker exec выполняется очень долго и есть ли способ ее ускорить?

    @rodion4dev
    Это, наверное. не тянет на ответ, но выполнение команды внутри запущенного контейнера, по-моему, и должно быть тяжеловесным.

    Я глубоко не изучал этот вопрос, но это ведь подобие виртуализации: только с виртуальной машиной общаются на уровне обычных протоколов, а с Docker контейнером - какими-то своими средствами и на прикладном уровне (насколько я это понимаю).

    Что касается ускорения - попробуй сделать скрипт, который будет засыпать на некоторое время и, просыпаясь, смотреть в volume, дёргать оттуда данные, и складывать их; а результат писать в stdout.

    Ну и, к слову, открытие подпроцесса - тоже операция не из лёгких, наверное потому и скорость такая. Лучше запустить один главные процесс (без дочерних) и в нём выполнять все необходимые операции.

    Или ещё один вариант - собрать свой образ, зашить туда ENTRYPOINT в виде твоего скрипта, и передавать туда данные для вычисления.

    В общем вариантов много.
    Ответ написан
    Комментировать
  • Наилучшая структура Django-проекта?

    @rodion4dev
    Отвечая на вопрос, увы, таковой нету. Вы должны сами для себя решить и не спустя три месяца.

    Но если желаете более предметно, то вот Вам мои ощущения по поводу Вашей структуры, к которой вы пришли...

    Первое, что бросается в глаза - настройки. Да, Вы следуете идеологии Django, которая неявно шепчет всем нам как их компоновать: но это небезопасно. Почему в настройках у вас модули, два из которых отражает какое-то окружение (разработка, боевое и что-то общее между тем и тем)? Исходя из Вашей структуры сразу витает в воздухе вопрос: "А почему настройки боевого окружения вдруг должны быть в репозитории? А как быть с секретным ключом? А безопасно ли это?". Следующий логичный вопрос удобства: почему я, как разработчик, вдруг должен заставлять своих DevOps'ов компоновать и поддерживать за меня настройки в виде файлов (модулей)? Это ведь исполняемый файл и там бесчисленное количество возможностей; более того, это не безопасно. Сейчас бОльшая часть проектов поднимается средствами docker-compose, куберов и прочих прелестей: дико неудобно собирать и поддерживать настройки в виде файлов для каждого запускаемого контейнера (у нас ведь есть переменные окружения). Надеюсь, здесь понятен основной посыл: безопасность и удобство использования.

    (здесь я не сразу понял, что это именно проект, а не приложение; подробности в комментариях)
    Едем дальше - core. Почему именно такое название? Понятное дело, ядро, Django в своих исходниках делает и всё такое... Но зайдя в такой проект, сразу ли будет понятно за что отвечает это приложение? Нет. В общем-то даже в документации к Django в quick start название приложения опирается на её главную бизнес-потребность.

    Переходим к следующему: папка apps с приложениями. Для начала вроде всё удобно и логично: есть ядро проекта, а есть дополнения к нему а значит их нужно как-то отделить от этого ядра. А что делать если ядро будет всегда одно в проекте? А что делать если дополнительных приложений будет всего одно? А зачем тогда ему целая папка (приложению) если само приложение - и есть папка (или модуль в нашем случае)? Так оставлять или менять уровень вложенности? На самом деле что core, что appN - являются такими же Django приложениями (одинаковыми), а значит и уровень абстракции у них - один; один уровень абстракции говорит нам о том, что и appN нужно класть где-то рядом с core (здесь должно быть другое название как и писал). Часто я вижу в проектах, что core так и остаётся одой единственной core папкой без дальнейшей расширяемости. Вывод - преждевременная оптимизация - вещь нелогичная по сути своей.

    Папка template. Здесь я всегда доверяюсь Django и кладу шаблоны в папку приложения (делая ещё две папки - templates, а в ней - папку с названием приложения). Здесь, думаю, подойдёт правило класть то, что используется, ближе к тому месту, где это используется (но с поправкой на рекоммендации оф. документации Django).

    Папка static. В среде отладки её быть в принципе быть не должно; обычно вся статика всегда в первую очередь связана с приложением, куда мы её и стараемся класть (как с папкой templates), что является и советом из Django документации.

    Папка models. Вынося её куда-то в отличное от папки приложения место, мы сразу же забиваем на автономность самого приложения; приложение сразу же становится зависимым от внешнего кода (чего нужно избегать). Обычно каждое приложение имеет свои модели и не зависит от моделей другого приложения.

    venv. Актуально только на компьютере каждого разработчика; по-моему это неудачное решение класть платформо-зависимые файлы под контроль версий.
    Ответ написан
    5 комментариев
  • Преобразовать миллисекунды в дату определенного формата?

    @rodion4dev
    Строка 1640256042000 на милисекунды не похожа; может это просто метка времени Unix? Формат мне так же не понятен, но больше похож на формат ISO.

    Если так, то:
    from datetime import datetime
    parsed_time = datetime.fromtimestamp(input_time)
    query_format_time = parsed_time.isoformat()
    query = "SELECT Name FROM Account WHERE CreatedDate > '%s'" % query_format_time
    Ответ написан
    Комментировать
  • Откуда взялось ключевое слово "category"?

    @rodion4dev
    c, created = Category.objects.get_or_create(category=row[7])


    Именно отсюда (см. выше) и берётся ключевое слово category. Скорее всего Вам нужно вот так: Category.objects.get_or_create(name=row[7])
    Ответ написан
    Комментировать
  • Как прописать соглашение на отправку почтовых уведомлений (django)?

    @rodion4dev
    Как вариант - добавить ещё одно поле BooleanField модели User с названием has_agree_to_receive_notifications и добавить это поле в список fields
    Ответ написан
  • Django - где найти пример кода для приложения вопросника (тестирование учеников)?

    @rodion4dev
    Такого примера, скорее всего, Вы не найдёте. Но можно пройтись по официальному руководству (шаг за шагом): не вопросник, конечно, но зато опросник :)
    Ответ написан
  • Что делать, если не открывается django admin панель на heroku?

    @rodion4dev
    Бывает :)

    http://www.shirman.gq/admin/

    Ошибку надеюсь сможете заметить :)
    Ответ написан
    2 комментария
  • Celery не видит модуль. Как подключить celery к FastApi?

    @rodion4dev
    Неверно указан путь до приложения Celery в docker-compose.yaml в worker.command. Попробуйте celery_worker:celery, если папка api - всего лишь папка (не пакет python); иначе - api.celery_worker:celery
    Ответ написан
  • Как можно на VPS, на docker+nginx запустить сайт с index.html?

    @rodion4dev
    Если вкратце - сделать сборку Docker образа, в процессе которой сначала собирается React, кладётся в папочку (внутри образа) и запускается Nginx на отдачу статики из неё.

    Вот как пример.
    Ответ написан
    Комментировать
  • Из за чего возникает ошибка с uuid?

    @rodion4dev
    Привет

    С таким количеством данных трудно решить проблему. Скорее всего дело либо в отсутствии миграций, либо в недостаточной кастомизации админки под новую модель.
    Ответ написан
  • Как правильно гуглить настройку MikroTik под мою задачу?

    @rodion4dev
    Добрый )

    Можно попробовать вот так:
    mikrotik настройка capsman


    ... если это, конечно, Вам подойдёт.
    Ответ написан
    Комментировать
  • Логирование в разные файлы в Python3?

    @rodion4dev
    Для этого необходимо более явно указывать название логгера при получении. Например:
    log_left = logging.getLogger("left_logger")
    log_right = logging.getLogger("right_logger")
    Ответ написан
    1 комментарий
  • TestCase, Cache или как написать тест для проверки кэша?

    @rodion4dev
    Реализация кеширования - часть Django фреймворка; по-моему, нет никакой необходимости тестировать то, что не написано Вами :)
    Ответ написан
  • Какой вид тестов использовать?

    @rodion4dev
    Всё зависит от того, какое тестирование Вы решили изучать. Если не можете определиться - предлагаю Вам узнать для начала о способах тестирования, хотя бы в общих чертах.

    Обычно начинают с модульного тестирования (unit-test) и в Django есть вспомогательные инструменты для этого (чего нет - можно найти в стандартной библиотеке unittest в python).
    Ответ написан
    Комментировать