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''