Как запустить функцию при запуске до обработки запросов в Django?
Я хочу запускать некоторый код при старте моего Django-сервера, чтобы очистить его от предыдущего завершения работы сервера. Как я могу запустить некоторый код один и только один раз при запуске, прежде чем сервер обработает какие-либо запросы. В это время мне нужно получить доступ к базе данных.
Я прочитал в Интернете несколько вещей, которые кажутся немного устаревшими, а также не гарантируют, что будут запущены только один раз.
This is often done with the .ready()
method [Django-doc] of any of the AppConfig
classes [Django-doc] of an installed app. So if you have an app named app_name
, you can work with:
# app_name/apps.py
from django.apps import AppConfig
class MyAppConfig(AppConfig):
# …
def ready(self):
# my management command
# …
Это выполнит после того, как загрузятся модели всех INSTALLED_APPS
, чтобы вы могли выполнять команды управления. Это также часто используется для привязки сигналов к моделям.