Выполнить код при первом запуске Django

У меня есть приложение Django, написанное для обработки отображения веб-страницы с данными из модели на основе первичного ключа, переданного в URL-адресе, все это прекрасно работает, а компонент Django работает отлично по большей части.

Мой вопрос, хотя есть, и я пробовал несколько методов, таких как использование AppConfig, заключается в том, как я могу это сделать, когда сервер Django загружается, вызывается код, который затем создает отдельный поток, который затем будет отслеживать внешний источник, регистрируя действительные данные из этого источника в качестве модели в базу данных.

У меня есть код потока, написанный вместе с разделом, который создает модель и сохраняет ее в базе данных. Моя проблема заключается в том, что если я попытаюсь использовать AppConfig для создания потока, который будет обрабатывать код, я получаю django.core .exceptions.AppRegistryNotReady: Приложения еще не загружены. ошибка, и сервер не загружается.

Где было бы целесообразно разместить код? Является ли мой подход неправильным в этом вопросе?

One Solution collect form web for “Выполнить код при первом запуске Django”

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

Гораздо проще создать отдельный рабочий, который запускается в совершенно другом процессе, который вы запускаете отдельно. Он будет иметь тот же доступ к базе данных и может даже использовать ваши модели Django. Это то, как хосты, подобные Heroku, подходят к этой проблеме. Он поставляется с дополнительным преимуществом: он может быть протестирован отдельно и вообще не нужно запускать, пока вы работаете над своим основным приложением Django.

В наши дни с множеством вариантов виртуализации, таких как Vagrant и варианты контейнеризации, такие как Docker, запущенные параллельные процессы и рабочие тривиальны. В дикой природе они могут буквально запускаться на отдельных серверах с вашей базой данных на другом сервере. Как отмечалось в комментариях, запуск рабочего процесса может быть легко делегирован отдельной команде управления Django . Это, в свою очередь, можно довольно легко превратить в отдельные рабочие процессы с помощью gunicorn на вашем веб-сервере.

  • Сайт Django, базовая игра 2d python
  • Нет модуля с именем _imagingft
  • Аутентификация пользователя с мобильным номером и OTP в Django 1.7
  • Как управлять локальными и производственными настройками в Django?
  • Django + MySQL на эластичном beanstalk - ошибка при запросе MySQL
  • Как я могу отложить выполнение задач Сельдерея?
  • Как очистить поля формы после отправки в Django
  • Django admin, пользовательское сообщение об ошибке?
  • Django - FileField проверяет, нет ли
  • Эквивалент PostGIS ST_MakeValid в Django GEOS
  • Django: ModelMultipleChoiceField не выбирает начальные варианты
  •  
    Interesting Posts for Van-Lav

    Использование VirtualEnv с несколькими версиями Python на окнах

    Как передать дескрипторы файлов из родительского в child в python?

    Как я могу нормализовать / свернуть пути или URL-адреса в Python независимо от ОС?

    В чем разница между pandas.qcut и pandas.cut?

    Объекты против экземпляра в python

    Когда возвращается socket.recv (recv_size)?

    Как обрабатывать ответ с сервера с помощью Python?

    Как определить, установлены ли Python setuptools?

    Найти множества непересекающихся множеств из списка кортежей или наборов в python

    как отправить асинхронную электронную почту с помощью django

    pandas: Как работать с _iLocIndexer?

    почему я не могу изменить только один элемент во вложенном списке в Python

    Как связать ключ пробела с определенным методом в tkinter (python)

    Можно ли изменить возвращаемое значение функции без определения новой функции в python?

    PGP-подписывание многостраничных сообщений электронной почты с помощью Python

    Python - лучший язык программирования в мире.