Installazione

non è necessario il pacchetto django-celery e l’app djcelery per produzione perchè si usa rabbit, serve solo per dev. django-celery ha anche altre interessanti funzionalità per i crontab

docs ufficiale http://celery.readthedocs.org/en/latest/index.html

in requires di setup.py aggiungere:

'jmb.async',
'django-celery' # <-solo se in dev

in settings.py (per noi base.py):

INSTALLED_APPS = (
   ....
  'jmb.async',
  'kombu.transport.django',
  'djcelery',
  # <-solo se in dev o per crontab
  )

in settings.dev:

import djcelery
djcelery.setup_loader()

mentre in produzione se si usa rabbitMQ leggete in fondo.

in buildout.cgf aggiungere:

[celery]
recipe = collective.recipe.celery
#broker-transport = sqlakombu.transport.Transport
#broker-host = sqlite:///celery_broker.db
#result-backend = database
#result-dburi = sqlite:///celery_results.db
imports = web.tasks
python = vpython

e sempre in buildout.cfg:

[buildout]
parts += celery

creare nella cartella web il file celery.py:

from __future__ import absolute_import

import os

from celery import Celery

from django.conf import settings

# set the default Django settings module for the 'celery' program.
os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'web.settings')

app = Celery('web', broker=settings.BROKER_URL)

# Using a string here means the worker will not have to
# pickle the object when using Windows.
#app.config_from_object('django.conf:settings')
app.autodiscover_tasks(lambda: settings.INSTALLED_APPS)

ricordarsi di lanciare nella shell:

dj sync && dj migrate

vedi qui come configurare async per dev o per prod Settings per avviare il servizio di celery lanciare:

bin/py bin/celery -A web worker -l info

su /admin/async/task/ puoi vedere un task. se si è in modalità debug, è abilitata l azione per creare un task di test per provare celery

Complimenti! ora puoi iniziare ad aggiungere un task link Creare un Task

Settings

In produzione usare rabbitmq

http://celery.readthedocs.org/en/latest/getting-started/first-steps-with-celery.html#rabbitmq

http://celery.readthedocs.org/en/latest/getting-started/brokers/rabbitmq.html

http://celery.readthedocs.org/en/latest/configuration.html#amqp-backend-settings

esempio di configurazione sostiuire ai parametri di dev questi nei settings.py:

BROKER_URL = 'amqp://'
CELERY_RESULT_BACKEND = 'amqp://'
CELERY_RESULT_BACKEND = 'amqp'
CELERY_TASK_RESULT_EXPIRES = 18000  # 5 hours.

Previous topic

Async

Next topic

Creare un Task

This Page