如何避免AppConfig.ready()方法在Django中运行两次

我想在Django服务器启动时执行一些代码,但我希望它只运行一次。当前,当我启动服务器时,它会执行两次。文件说明可能会发生这种情况,并且:

您应该在AppConfig类上设置一个标志,以防止重新运行
应该只执行一次的代码

你知道如何做到这一点吗?下面的Print语句仍然执行两次

来自django.apps的

导入AppConfig
导入app.mqtt
从apscheduler.schedulers.background导入BackgroundScheduler
类MyAppConfig(AppConfig):
名称='应用程序'
详细名称=“家庭物联网”
run_ready=False
def就绪(自我):
如果MyAppConfig.run_已存在:返回
MyAppConfig.run_已=True
打印(“你好”)

使用python manage.py runserverDjango时,启动两个进程,一个用于实际开发服务器,另一个用于在代码更改时重新加载应用程序

您也可以在不使用重新加载选项的情况下启动服务器,并且您将看到只有一个正在运行的进程只执行一次:

python manage.py运行服务器–noreload

您可以看到这个链接,它解析了在Django中运行两次的ready()方法

发表评论