Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
python:celery [2015/06/22 14:39]
vondra [Django Integration]
python:celery [2015/06/22 16:13] (current)
vondra [Instalation]
Line 14: Line 14:
 (note: make sure there is not south installed on your system when using django >= 1.7) (note: make sure there is not south installed on your system when using django >= 1.7)
  
 +if unable to start RabbitMQ and <​code>​ ERROR: epmd error for host address (cannot connect to host/​port)</​code>​
 +in /​var/​log/​rabbitmq/​startup_log,​ put your hostname in /etc/hosts after localhost
 ===== Django Integration ===== ===== Django Integration =====
 http://​celery.readthedocs.org/​en/​latest/​django/​first-steps-with-django.html http://​celery.readthedocs.org/​en/​latest/​django/​first-steps-with-django.html
   - Create project celery config projectname/​celery.py:​ <code python>   - Create project celery config projectname/​celery.py:​ <code python>
-ffrom __future__ import absolute_import+from __future__ import absolute_import
  
 import os import os
Line 41: Line 43:
 def debug_task(self):​ def debug_task(self):​
     print('​Request:​ {0!r}'​.format(self.request))     print('​Request:​ {0!r}'​.format(self.request))
 +</​code>​
 +  - Create myapp/​tasks.py<​code python>
 +from __future__ import absolute_import
  
 +from celery import shared_task
 +
 +
 +@shared_task
 +def add(x, y):
 +    return x + y
 +
 +
 +@shared_task
 +def mul(x, y):
 +    return x * y
 +
 +
 +@shared_task
 +def xsum(numbers):​
 +    return sum(numbers)
 +
 +
 +@shared_task
 +def gen_prime(x):​
 +    multiples = []
 +    results = []
 +    for i in xrange(2, x+1):
 +        if i not in multiples:
 +            results.append(i)
 +            for j in xrange(i*i, x+1, i):
 +                multiples.append(j)
 +    return results
 +</​code>​
 +  - Sync django db (./​manage.py syncdb ​ or ./manage.py makemigrations && migrate)
 +  - Add djcelery to INSTALLED_APPS and add following lines to project/​settings.py:<​code python>
 +CELERYBEAT_SCHEDULER = '​djcelery.schedulers.DatabaseScheduler'​
 +CELERY_RESULT_BACKEND = '​djcelery.backends.database:​DatabaseBackend'​
 +</​code>​
 +  - Run celery watcher: <code bash>​./​manage.py celeryd -E</​code>​
 +  - Optionaly: run celerycam and celerymon to enable the monitoring via DB:<code bash>
 +./manage.py celerycam
 +./manage.py celerymon
 </​code>​ </​code>​
 
python/celery.1434976744.txt.gz · Last modified: 2015/06/22 14:39 by vondra