我想在 Django 服务器启动时执行一些代码,但我希望它只运行一次。目前,当我启动服务器时,它会执行两次。文档 https://docs.djangoproject.com/en/1.8/ref/applications/说这可能会发生并且:
您应该在 AppConfig 类上放置一个标志以防止重新运行
应该只执行一次的代码。
知道如何实现这一目标吗?下面的打印语句仍然执行两次。
from django.apps import AppConfig
import app.mqtt
from apscheduler.schedulers.background import BackgroundScheduler
class MyAppConfig(AppConfig):
name = 'app'
verbose_name = "HomeIoT"
run_already = False
def ready(self):
if MyAppConfig.run_already: return
MyAppConfig.run_already = True
print("Hello")
当你使用python manage.py runserver
,Django 启动两个进程,一个用于实际的开发服务器,另一个在代码更改时重新加载您的应用程序。
您可以在不使用重新加载选项的情况下启动服务器,并且您将只看到一个进程正在运行:
python manage.py runserver --noreload
也可以看看the ready()方法在 Django 中运行两次 https://stackoverflow.com/questions/37441564/redefinition-of-appconfig-ready.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)