tasks schedulers periodic beat_schedule beat app add_periodic_task django celery celerybeat

schedulers - En apio 3.1, realizando tareas periódicas de django.



django beat_schedule (2)

Puede usar la aplicación django-celery: https://pypi.python.org/pypi/django-celery

Instalación :

pip install django-celery

Para habilitar django-celery para su proyecto, debe agregar djcelery a INSTALLED_APPS:

INSTALLED_APPS += ("djcelery", ) CELERYBEAT_SCHEDULER = "djcelery.schedulers.DatabaseScheduler"

a continuación, agregue las siguientes líneas a su settings.py:

import djcelery djcelery.setup_loader()

USO

En Linux puede ejecutar Worker con apio-beat como este:

python manage.py celeryd worker --loglevel=DEBUG -E -B -c 1 python manage.py help celeryd #to find out the args meaning

También te gustará monitorear tareas en django admin. Para habilitar la monitorización, deberá ejecutar celerycam:

python /var/www/gorod/manage.py celerycam

Para realizar tareas periódicas puede utilizar celery.decorators.periodic_task.

# myapp/tasks.py import datetime import celery @celery.decorators.periodic_task(run_every=datetime.timedelta(minutes=5)) def myfunc(): print ''periodic_task''

O usar

# settings.py CELERYBEAT_SCHEDULE = { ''add-every-30-seconds'': { ''task'': ''tasks.add'', ''schedule'': timedelta(seconds=30), ''args'': (16, 16) }, }

Las cosas cambiaron demasiado en Django, así que no puedo usar 3.1. Necesito algo de ayuda.

Leí sobre realizar una tarea en django y leo el documento de tareas periódicas . Pero no sé cómo hacer tareas periódicas en django. Creo que esto se debe a mi bajo nivel de inglés.

En la versión anterior de Celery, importé djcelery & crontab y configuré CELERYBEAT_SCHEDULE en settings.py , y excité por manage.py .

Pero parece que ya no puedo ejecutar el demonio de apio de esa manera. Que donde debo poner CELERYBEAT_SCHEDULE? En el ejemplo de django en documentos, configuran os.environ.setdefault(''DJANGO_SETTINGS_MODULE'', ''proj.settings'') en proj / proj / celery.py . (1) Así que configurar celerybeat en settings.py (como antes) está bien?

(2) Si puede, un pequeño ejemplo de hacer una tarea periódica en django será muy útil. Cuando estaba leyendo tutoriales, la parte más confusa era File Path . Si no quiere proporcionar un ejemplo completo, apreciaré mucho si me explica dónde debo realizar las tareas, establecer el ritmo y ejecutar el demonio.

Gracias por leer.


Supongo que ya has leído la sección django de los documentos, pero ¿has visto este proyecto de ejemplo ?

No usa el programador, pero si lo agrega a settings.py :

from __future__ import absolute_import from celery.schedules import crontab CELERYBEAT_SCHEDULE = { # crontab(hour=0, minute=0, day_of_week=''saturday'') ''schedule-name'': { # example: ''file-backup'' ''task'': ''some_django_app.tasks....'', # example: ''files.tasks.cleanup'' ''schedule'': crontab(...) }, } # if you want to place the schedule file relative to your project or something: CELERYBEAT_SCHEDULE_FILENAME = "some/path/and/filename"

Ahora, para los comandos, olvídate de manage.py , simplemente escribe celery directamente:

-B permite batir el apio como siempre.

-A especifica el nombre de la aplicación de apio. Observe esta línea en celery.py del proyecto de ejemplo: app = Celery(''proj'')

celery -A proj worker -B -l info

No se requiere ''django-celery'', instálelo SOLAMENTE si necesita administrar la programación desde el administrador, o si desea almacenar los resultados de la tarea en la base de datos a través del ORM de django:

INSTALLED_APPS += (''djcelery'',) # store schedule in the DB: CELERYBEAT_SCHEDULER = ''djcelery.schedulers.DatabaseScheduler''