2013-05-21 9 views
7

Uso attività di sedano periodiche con Django. Ho usato per avere la seguente operazione nella mia app file/tasks.py:La sequenza di battiti di Celery include attività obsolete

@periodic_task(run_every=timedelta(minutes=2)) 
def stuff(): 
    ... 

Ma ora questo compito è stato rimosso dal mio file app/tasks.py. Tuttavia, Continuo a vedere chiamata a questo compito nei miei registri di sedano:

[2013-05-21 07:08:37,963: ERROR/MainProcess] Received unregistered task of type u'app.tasks.stuff'. 

Sembra che il sedano battito scheduler che uso non aggiorna la sua coda. Questo è il modo lo scheduler è definito nel mio progetto file/settings.py:

CELERYBEAT_SCHEDULER = "djcelery.schedulers.DatabaseScheduler" 

Il riavvio del lavoratore sedano non aiuta. Cordiali saluti, io uso un broker Redis.

Come posso cancellare o aggiornare la coda di battimento del sedano in modo che le attività meno recenti non vengano inviate al mio operatore di sedano?

+0

Penso che sia necessario rimuovere anche la voce del database per il programma. Puoi farlo dall'amministratore di django. – Ngenator

+0

Ciao Regis, sei riuscito a risolvere questo problema. Ho lo stesso problema. @Ngenator - la tua soluzione è –

+0

Il problema potrebbe essere nel server redis. Dal momento che le attività di sedici sono un oggetto in salamoia che sono state inserite nel server redis, i redis continuano a mantenere le attività obsolete. Riavviare il server redis o chiamare la funzione di eliminazione dell'attività. –

risposta

-1

Elimina il file .pyc in cui è stata originariamente scritta l'attività. Oppure, elimina tutti i file .pyc nella directory dei tuoi progetti.

Questo comando dovrebbe funzionare:

find . -name "*.pyc" -exec rm -rf {} \; 

How do I remove all .pyc files from a project?

+0

Questo non funziona! Ho anche provato a rimuovere 'celerybeat-schedule'. – Babu

2

Installare django-celery.

Come citato, questo progetto non è necessario per utilizzare il sedano, ma è necessario per abilitare l'interfaccia di amministrazione allo /admin/djcelery/ per la gestione delle attività periodiche. Inizialmente non ci saranno compiti registrati o periodici.

Riavviare il ritmo e controllare di nuovo la tabella Operazioni periodiche. Beat avrebbe aggiunto le attività pianificate esistenti in quella tabella con l'intervallo o crontab definito nelle impostazioni o nei decoratori. Qui puoi eliminare le attività indesiderate.

UPDATE: Da celery4, si consiglia di utilizzare questo pacchetto. https://github.com/celery/django-celery-beat

Problemi correlati