L'applicazione è stata creata utilizzando il sedano e recentemente abbiamo ricevuto l'obbligo di eseguire determinate attività nei tempi previsti.celerybeat: più istanze e monitoraggio
penso celerybeat è perfetto per questo, ma ho avuto alcune domande:
- E 'possibile eseguire più istanze celerybeat, in modo che i compiti non vengono duplicati?
- Come assicurarsi che il celerybeat sia sempre attivo & in esecuzione?
Finora ho letto questo: https://github.com/celery/celery/issues/251 e https://github.com/ybrs/single-beat
Sembra una singola istanza di celerybeat dovrebbe essere in esecuzione.
Sto eseguendo l'applicazione all'interno di contenitori di finestra mobile AWB elastico e gli operatori di sedici sono anche contenitori di docker (quindi è rapidamente scalabile quando necessario).
Sarebbe meglio che il celibato passasse attraverso supervisord insieme ai lavoratori del sedano, ma sembra che questo non sia il modo corretto per farlo.
Allo stesso tempo, disporre di una singola istanza di sedano richiede il provisioning manuale/avvio e monitoraggio.
Non riesco a riprodurre questo comportamento con _djcelery_'s "DatabaseScheduler'.Sto usando un intervallo di programmazione 'timedelta (seconds = 5)' e un database _SQLite_ per il test. Le attività vengono inserite nella coda ed elaborate due volte se sono in esecuzione due processi 'beat'. – Feuermurmel
Qui potrei sbagliarmi, ma non è questo processo di "prenotazione" appena usato in modo che più lavoratori non eseguano lo * stesso * lavoro? Non ha nulla a che fare con la sincronizzazione di più scheduler in modo che non possano avviare processi duplicati. – Ian
@Feuermurmel Lo confermo. Celerybeat deve essere eseguito solo una volta. –