Почему я получаю "SyntaxError: не-ASCII символ '\ xa3'" при запуске celeryd? - PullRequest
2 голосов
/ 14 января 2012

Я пытаюсь запустить celeryd с Django & Virtualenv в Ubuntu и получаю эту ошибку:

celeryd-multi v2.4.5
> Starting nodes...
    > celery.heron:   File "/sites/.virtualenvs/myproject/bin/python", line 1
SyntaxError: Non-ASCII character '\xa3' in file /sites/.virtualenvs/myproject/bin/python on line 2, but no encoding declared; see http://www.python.org/peps/pep-0263.html for details
* Child terminated with failure code 1
FAILED

Я думал, что это проблема кодирования, но не уверен, где. Я добавил # -*- coding: utf-8 -*- в свой сценарий celeryd-multi, а также в свой сценарий manage.py и фактический файл .py, в котором есть код задачи, но это не помогло.

Это мой /etc/default/celeryd файл конфигурации:

CELERYD="/sites/.virtualenvs/myproject/bin/python /sites/dev.myproject.co/code/myproject/manage.py celeryd"

CELERYD_CHDIR="/sites/dev.myproject.co/code/myproject"

DJANGO_SETTINGS_MODULE="settings"

CELERYD_OPTS="-v 2 -B -s celery -E"

CELERYD_LOG_FILE="/sites/dev.myproject.co/logs/celery.log"

CELERYD_USER="www-data"

CELERYD_GROUP="www-data"

Чего мне не хватает?

Ответы [ 2 ]

2 голосов
/ 14 января 2012

Это не проблема кодирования.Посмотрите, какой файл имеет проблему с кодировкой:

/ sites / .virtualenvs / myproject / bin / python

Похоже, что сельдерей пытается разобрать ваш CELERYDпеременная в виде файла Python, несмотря на то, что на самом деле это двоичный файл Python.Попробуйте удалить двоичную строку python из начала объявления переменной CELERYD.

1 голос
/ 14 января 2012

Благодаря подсказкам @gravitron и @ Wooble я решил эту проблему, добавив в свою конфигурацию celeryd следующее:

# Python interpreter from environment.
ENV_PYTHON="/sites/.virtualenvs/myproject/bin/python"

# How to call "manage.py celeryd_multi"
CELERYD_MULTI="$ENV_PYTHON $CELERYD_CHDIR/manage.py celeryd_multi"

# How to call "manage.py celeryctl"
CELERYCTL="$ENV_PYTHON $CELERYD_CHDIR/manage.py celeryctl"
...