2014-05-19 15 views
8

c'è un modo per aggiungere, modificare, rimuovere sederi.schedule in fase di esecuzione. Ho bisogno di qualcosa che legge periodicamente una tabella DB per conoscere l'elenco dei programmi.Aggiungere, modificare, rimuovere sederi.schedule in fase di esecuzione

Il documento dice che uno può usare djcelery.schedulers.DatabaseScheduler per ottenere quello che voglio, ma non è sicuro di come farlo.

ho letto How to dynamically add/remove periodic tasks to Celery (celerybeat), ancora non chiare

Grazie per l'aiuto

+0

Anything cambiato su questo dal 2014? – Tanay

+0

Ha tentato dopo questo –

risposta

11

Quando si imposta nelle impostazioni dell'app:

CELERYBEAT_SCHEDULER='djcelery.schedulers.DatabaseScheduler' 

celery beat proces controlli Django modello PeriodicTask per vedere cosa compito dovrebbe essere eseguito .

È possibile aggiungere/modificare/rimuovere tali compiti modificando utilizzando il modello django:

from djcelery.models import PeriodicTask, CrontabSchedule 

every_hours_crontab = CrontabSchedule(minute=0) 
every_hours_crontab.save() 

periodic_task = PeriodicTask(
    name='Call my task every hour', 
    task='myproject.tasks.mytask', 
    crontab=every_hours_crontab, 
    args=json.dump([arg1, arg2]), 
    kwargs=json.dump({'foo': 'bar'}) 
) 
periodic_task.save() 

È inoltre possibile testare varie configurazioni di PeriodicTask utilizzando il pannello di django amministrazione:
http://localhost:8000/admin/djcelery/crontabschedule/add/
http://localhost:8000/admin/djcelery/periodictask/

+1

Cosa succede se non sto usando Django? – Veehmot

+0

Quindi è necessario implementare tale funzionalità da soli o utilizzare qualsiasi altro framework che hai. – daniula

Problemi correlati