Nel mio lavoro principale sto lavorando su un’applicazione Django con Celery per la gestione delle code, che utilizza Redis come backend. Ad ogni deploy, i job “svaniscono” e scompaiono. E dobbiamo inserire aggiornamenti/deploy tra i processi di lunga durata del client.
Sto sostituendo tutto ciò con una coda basata su database utilizzando una macchina a stati formale, e utilizzando Celery solo per la fase di “esegui il task adesso”. Questo mi garantisce uno stato persistente, la capacità di eseguire i job direttamente, cioè non usando Celery come coda, e lo stato non è transitorio in Redis.
Questo è il diagramma di stato che sto utilizzando:
Grazie Cameron, mi concentrerò su questo, dato che ora abbiamo di nuovo l’accesso ai log. Finora nulla di ovvio, non ci sono errori o processi in background falliti che io possa vedere, e dalla logica del codice non vedo nulla che possa intenzionalmente saltare queste email. Per quell’argomento nessuno ha ricevuto un’email per l’OP, il che è intrigante, è come se il processo non fosse mai stato nemmeno messo in coda in primo luogo. Continuerò a cercare e ti farò sapere.
@cameron-simpson abbiamo approfondito ulteriormente e il problema riguarda in realtà il nostro sistema di code di revisione. Ad esempio, con Mental block, simple question - Python Help - Discussions on Python.org è stato rilevato come “spam” da Akismet, il che ha reso necessaria l’approvazione dell’amministratore. Quando l’amministratore approva il post, le email in modalità mailing list non vengono messe in coda. Quando risolveremo questo bug, dovrebbe risolvere il problema. Dovrei essere in grado di occuparmene nelle prossime due settimane.
Ho unito questa correzione oggi @cameron-simpson, distribuirò anche python oggi, poi se potessi farmi sapere di ulteriori casi in cui ciò accade sarebbe fantastico Tuttavia, penso che questo dovrebbe risolvere il problema: