Найти - Пользователи
Полная версия: Помогите разобраться с Django + Celery + RabbitMQ
Начало » Django » Помогите разобраться с Django + Celery + RabbitMQ
1
krinart
Здравствуйте, уважаемые.

Встала передо мной задачка прикрутить к django-проекту celery. На локалке всё поднял, всё работает.
А вот на боевом сервере никак не разберусь как запускать celery демоном. Делал всё как описано здесь: http://docs.celeryq.org/en/latest/cookbook/daemonizing.html

Вот мой celery-конфиг:
#   # Where the Django project is.
CELERYD_CHDIR="/home/django-projects/oxen"
# # Name of the projects settings module.
export DJANGO_SETTINGS_MODULE="settings-prod"
# Path to celeryd
CELERYD="$CELERYD_CHDIR/manage.py celeryd"

CELERYD_MULTI="$CELERYD_CHDIR/manage.py celeryd_multi"
wsgi-скрипт:
import os, sys

dn = os.path.dirname
PROJECT_ROOT = os.path.abspath(dn(dn(__file__)))
sys.path.append(PROJECT_ROOT)

os.environ['DJANGO_SETTINGS_MODULE'] = 'settings-prod'
os.environ['CELERY_LOADER'] = 'django'

import django.core.handlers.wsgi
application = django.core.handlers.wsgi.WSGIHandler()
Пробовал менять:
os.environ['CELERY_LOADER'] = 'djcelery.loaders.DjangoLoader'
settings-prod.py:
import djcelery
djcelery.setup_loader()

BROKER_HOST = "127.0.0.1"
BROKER_PORT = 5672
BROKER_VHOST = "/"
BROKER_USER = "guest"
BROKER_PASSWORD = "guest"
CELERY_BACKEND = "amqp"

CELERY_RESULT_BACKEND = "database"
CELERY_SEND_EVENTS = True
CELERY_QUEUES = {"default": {"exchange": "default",
"binding_key": "default"}}
CELERY_DEFAULT_QUEUE = "default"

CELERY_IMPORTS = ("tasks", )
tasks.py:
from celery.decorators import task

@task
def square_sum(n):
return sum(i*i for i in xrange(0, n+1))
запускаю простой командой:
/etc/init.d/celeryd start
celeryd-multi v2.3.1
> Starting nodes...
> celery.euve25028.server4you.net: OK
через консоль пытаюсь выполнить:
>>> from task import square_sum
>>> res = square_sum.delay(100)
>>> print res.result
None
Однако всё начинает работать, когда я вручную запускаю celery
django-admin.py celeryd -l info --settings=settings-prod --pythonpath=.
Подскажите, в чём ошибка? Второй день не могу найти.
r_black
krinart
Попробуйте использовать supervisor. У меня с ним проект прекрасно работает уже больше года, проблем не было. Из документации celery: шаблоны конфигов https://github.com/ask/celery/tree/master/contrib/supervisord .
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB