LINUX.ORG.RU

Django + Celery + Virtualenv

 , , ,


1

1

Всем привет! Пытаюсь начать использовать в работе django-celery, да вот косячок на уровне запуска демона celeryd выходит, победить не пока не могу. Посему, ежели кто сталкивался с подобной проблемой, поможИте чем можИте).

Общая структура проекта:


(../ - virtualenv)

mysite/
    manage.py
    mysite/
        __init__.py
        settings.py
        urls.py
        wsgi.py
        celery.py
    myapp/
        tasks.py
        ...

Хочу запускать celeryd как обычную службу debian (7.4). Создаю файл «/etc/init.d/celeryd» (https://raw.github.com/ask/celery/master/contrib/generic-init.d/celeryd)

Cтавлю права как +x.

Создаю файл «/etc/default/celeryd» (по http://docs.celeryproject.org/en/latest/tutorials/daemonizing.html#daemonizing):

CELERYD_CHDIR="path/to/project"
CELERY_BIN="path/to/bin/celery" # virtualenv
CELERY_APP="myapp"
CELERYD_MULTI="$CELERYD_CHDIR/manage.py celeryd_multi"

CELERYD_OPTS="--time-limit=300 --concurrency=8 -B"
CELERYD_LOG_FILE=/var/log/celery/%n.log

# Path to celerybeat
CELERYBEAT="$CELERYD_CHDIR/manage.py celerybeat"
CELERYBEAT_LOG_FILE="/var/log/celery/beat.log"
CELERYBEAT_PID_FILE="/var/run/celery/beat.pid"

CELERY_CONFIG_MODULE="settings"

export DJANGO_SETTINGS_MODULE="settings"

Пытаюсь запустить демон celeryd:

/etc/init.d/celeryd start

Выдает:

...
File "/usr/local/lib/python2.7/dist-packages/django/conf/__init__.py", line 132, in __init__
    % (self.SETTINGS_MODULE, e)
ImportError: Could not import settings 'settings' (Is it on sys.path? Is there an import error in the settings file?): No module named settings

Будут какие-нибудь соображения?


Ответ на: комментарий от x3al

1

По этой доку я и делал

2

Не помогло:

ImportError: Could not import settings 'mysite.settings' (Is it on sys.path? Is there an import error in the settings file?): No module named celery
Sektor ()
Ответ на: комментарий от Sektor

Причем, все работает норм. когда из своего virtualenv запускаю как ./manage.py celeryd -l INFO -B. А вот как «сервис» стартовать не хочет. Что-то с питоновскими путями засада какая-то...

Sektor ()

CELERYD_MULTI=«$CELERYD_CHDIR/manage.py celeryd_multi»

В manage.py какой путь к интерпретатору прописан?

provaton ★★★★★ ()
Ответ на: комментарий от Sektor

Ну вот, значит это системный питон, а не из виртуалэнва. Сделай

CELERYD_MULTI="path/to/virtualenv/bin/python $CELERYD_CHDIR/manage.py celeryd_multi"

И там еще одно такое место есть.

provaton ★★★★★ ()
Ответ на: комментарий от Sektor

Что-то я погоречился, что работает. Сервис вроде как запускается но процесс не создается, таски не отрабатываются. В чем может быть дело?

Sektor ()
Ответ на: комментарий от Sektor

Мой тебе совет: не парься и возьми supervisord. Этот демон «ис каропки» запустит тебе на продакшене и django и celery а, если надо, то в virtualenv. И будет тебе счастье.

k0valenk0_igor ★★★ ()

Пускаю сельдерей не как системный, а каждому пользователю по сельдерею. Такие дела.

UPD: Точнее каждому проекту по сельдерею.

commit ()
Последнее исправление: commit (всего исправлений: 1)
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.