È un po 'strano che the docs assomigli al fatto che il tuo CELERYBEAT_SCHEDULE sia un file separato. In realtà, si tratta di una voce nella tua app (nota anche come istanza di Celery()) che puoi see it listed here. Quindi, tuttavia, hai la configurazione nella tua app, è lì che va.
Ci sono molti modi per ottenere la configurazione nell'app. Se credi "Explicit is better than implicit", quindi probabilmente avrete bisogno di:
- Metti la tua configurazione in un modulo, come
celeryconfig.py
- importare il modulo in cui la vostra applicazione è definire o usato.
import celeryconfig
- Applicare l'oggetto modulo all'app.
app.config_from_object(celeryconfig)
file di esempio celeryconfig.py
from datetime import timedelta
BROKER_URL = "redis://redis.local:6379/0"
BROKER_TRANSPORT_OPTIONS = {'fanout_prefix': True, 'fanout_patterns': True, 'visibility_timeout': 480}
CELERY_RESULT_BACKEND = BROKER_URL
CELERYBEAT_SCHEDULE = {
'addrandom-to-16K-every-2-seconds': {
'task': 'celery_test.tasks.addrandom', # notice that the complete name is needed
'schedule': timedelta(seconds=2),
'args': (16000, 42)
},
}
CELERY_TIMEZONE = 'UTC'
Cercando di mettere in un file come beatschedule.py
e quindi eseguire celery -A beatschedule beat
si arriva AttributeError: 'module' object has no attribute 'celery'
ho creato this project di demo Celerybeat in azione come descritto nei documenti. Credo che fare un lavoro migliore di mostrare come funziona tutto di leggere solo i documenti. Ho anche creato this Docker image per renderlo attivo e funzionante il più semplice possibile.
fonte
2015-03-06 08:17:51