Voglio eseguire qualche codice all'avvio del server Django ma voglio che venga eseguito solo una volta. Attualmente quando avvio il server è eseguito due volte. Documentation dice che questo potrebbe accadere e:Come evitare il metodo AppConfig.ready() in esecuzione due volte in Django
si dovrebbe mettere una bandiera sul vostro classi AppConfig per evitare che il codice ri-esecuzione che dovrebbe essere eseguito esattamente una volta.
Qualche idea su come raggiungere questo obiettivo? L'istruzione di stampa di seguito è ancora eseguita due volte.
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")
È che indentazione corretta?'ready' dovrebbe essere all'interno della classe MyAppConfig. –
Hai ragione. Era solo un errore di copia/incolla. L'ho riparato. – Koooop
La doppia stampa si verifica se si esegue '--noreload'? – AKX