Форум сайта python.su
Здравствуйте, уважаемые.
Встала передо мной задачка прикрутить к 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"
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'
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", )
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
django-admin.py celeryd -l info --settings=settings-prod --pythonpath=.
Офлайн
krinart
Попробуйте использовать supervisor. У меня с ним проект прекрасно работает уже больше года, проблем не было. Из документации celery: шаблоны конфигов https://github.com/ask/celery/tree/master/contrib/supervisord .
Отредактировано (Сен. 24, 2011 17:47:27)
Офлайн