2015-03-03 20 views
7

Ho letto più pagine dei risultati di Google più volte e sono molto confuso su come impaginare il mio progetto. Sono riuscito a far funzionare Celerybeat usando il decoratore periodic_task, ma questo è depreciated and is being removed. Da quanto ho capito, the docs suggerisce che CELERYBEAT_SCHEDULE è la sostituzione. Ho creato un file esattamente come mostrato, ma non ho ancora capito:Dove CELERYBEAT_SCHEDULE va nel tuo progetto?

  • Come chiamarlo?
  • Dove metterlo?

Trovo molto difficile trovare il modo giusto di usare sedano in un progetto dinon Django.

risposta

7

È 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:

  1. Metti la tua configurazione in un modulo, come celeryconfig.py
  2. importare il modulo in cui la vostra applicazione è definire o usato. import celeryconfig
  3. 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.