django-admin.py и правильный способ изменить PYTHONPATH в Dotcloud?

У меня нет manage.py, и я использую разные настройки для DJANGO_SETTINGS_MODULE и django-admin.py для переключения между средами разработки и производства. Это предлагается как документами Django, так и pydanny в «2 Scoops of Django».

Мой проект находится в /home/dotcloud/current/bipolar. Мои настройки находятся в /home/dotcloud/current/bipolar/bipolar/settings/dotcloud.py, следуя структуре каталогов Django 1.5. DJANGO_SETTINGS_MODuLE устанавливается в dotcloud.yml как bipolar.settings.dotcloud.

У меня проблемы с запуском Dotcloud. Когда я просто следую примеру учебника, мне уже нужно добавить export PYTHONPATH=/home/dotcloud/current/(hellodjango|bipolar):$PYTHONPATH в сценарий postinstall.

При использовании супервизора для запуска сельдерея все становится очень сложно. Я пытаюсь запустить команду django-admin.py celery worker. Но как бы я ни пытался настроить свой PYTHONPATH на /home/dotcloud/current/bipolar, он не подхватывается. я пробовал оба

command = "PYTHONPATH=/home/dotcloud/current/bipolar:$PYTHONPATH django-admin.py celery worker --loglevel=INFO -E"

а также

environment=PYTHONPATH="/home/dotcloud/current/bipolar"

в supervisord.conf безрезультатно. Я пытался перемещать вещи в сценарий оболочки, устанавливая путь перед его запуском... В конце концов, это работает для postinstall! И это работает при запуске в оболочке, но не работает при развертывании машины.

Поэтому предлагается любая помощь!

edit: с тех пор я пробовал несколько вещей. Я повторно добавил manage.py, который устанавливает правильные sys.path и DJANGO_SETTINGS_MODULE, но безрезультатно. Наконец, я добавил службу python-worker, которая ничего не добилась, кроме того, что дважды потерпела неудачу (supervisord.conf читается на обеих службах, да?).


person Maik Hoepfel    schedule 13.03.2013    source источник


Ответы (2)


Я знаю, что это может не сработать, но вы пробовали:

command = "cd /home/dotcloud/current/bipolar && django-admin.py celery worker --loglevel=INFO -E"
person Thomas    schedule 14.03.2013
comment
Нет, я не видел. Я не упомянул, что в supervisord.conf я также поставил directory = $HOME/current/bipolar/. Но я попробовал это сейчас, и это дает мне: 2013-03-14 08:03:35,217 INFO spawnerr: can't find command 'cd /home/dotcloud/current/bipolar && django-admin.py celery worker --loglevel=INFO -E' Пути правильные; повторное выполнение копипастой команды в консоли приводит к ImportError: Could not import settings 'bipolar.settings.dotcloud'. Но когда я захожу в оболочку Python в этом каталоге, я могу импортировать ее без проблем. - person Maik Hoepfel; 14.03.2013

Оказывается, документы неверны. Нельзя установить directory = $HOME/current/ в supervisord.conf. Замените его на /home/dotcloud/current/, и все готово.

Я все еще не мог заставить django-admin.py работать; Я предполагаю, что он вызывается с двоичным файлом Python вне virtualenv. Я нахожу manage.py немного хакерским; Есть ли способ лучше?

Моя рабочая supervisord.conf:

[program:celery_beat]
directory = /home/dotcloud/current/bipolar/
stderr_logfile = /var/log/supervisor/%(program_name)s_error.log
stdout_logfile = /var/log/supervisor/%(program_name)s.log
command = /home/dotcloud/env/bin/python manage.py celery beat --loglevel=INFO

[program:celery_worker]
directory = /home/dotcloud/current/bipolar/
stderr_logfile = /var/log/supervisor/%(program_name)s_error.log
stdout_logfile = /var/log/supervisor/%(program_name)s.log
command = /home/dotcloud/env/bin/python manage.py celery worker -E --loglevel=INFO
person Maik Hoepfel    schedule 14.03.2013