Djangoサーバーの起動時にいくつかのコードを実行したいが、そのコードを1回だけ実行したい。現在、サーバーを起動すると2回実行されます。DjangoでAppConfig.ready()メソッドが2回実行されるのを避ける方法
あなたは正確に1回実行する必要があります再実行し コードを防ぐために、あなたのAppConfigクラスにフラグを置く必要があります。Documentationはこれが起こるかもしれないと言います。
どのようにこれを達成するためのアイデアですか?以下のPrint文は依然として2回実行されます。
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")
はそのインデントが正しいですか?'ready'はMyAppConfigクラスの内側にあるはずです。 –
あなたは正しいです。それはちょうどコピー/貼り付けの間違いだった。それを私が直した。 – Koooop
'--noreload'を実行すると二重印刷が行われますか? – AKX