Уведомления

Группа в Telegram: @pythonsu
  • Начало
  • » Django
  • » Помогите разобраться с Django + Celery + RabbitMQ [RSS Feed]

#1 Сен. 1, 2011 16:03:45

krinart
От:
Зарегистрирован: 2011-09-01
Сообщения: 1
Репутация: +  0  -
Профиль   Отправить e-mail  

Помогите разобраться с Django + Celery + RabbitMQ

Здравствуйте, уважаемые.

Встала передо мной задачка прикрутить к 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=.
Подскажите, в чём ошибка? Второй день не могу найти.



Офлайн

#2 Сен. 24, 2011 17:46:42

r_black
От:
Зарегистрирован: 2011-09-24
Сообщения: 1
Репутация: +  0  -
Профиль   Отправить e-mail  

Помогите разобраться с Django + Celery + RabbitMQ

krinart
Попробуйте использовать supervisor. У меня с ним проект прекрасно работает уже больше года, проблем не было. Из документации celery: шаблоны конфигов https://github.com/ask/celery/tree/master/contrib/supervisord .



Отредактировано (Сен. 24, 2011 17:47:27)

Офлайн

  • Начало
  • » Django
  • » Помогите разобраться с Django + Celery + RabbitMQ[RSS Feed]

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version