2013-03-13 3 views
0

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

Мой проект находится в /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, в конце концов! И он работает при запуске на оболочке, но не работает, когда машина развернута.

Так что любая помощь предлагается!

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

ответ

0

Оказывается the docs неверны. Нельзя установить 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 
0

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

command = "cd /home/dotcloud/current/bipolar && django-admin.py celery worker --loglevel=INFO -E" 
+0

Нет, у меня нет. Я не упоминал, что в 'supervisord.conf' я также установил' directory = $ HOME/current/bipolar/'. Но я попробовал это сейчас, и это дает мне: '2013-03-14 08: 03: 35,217 INFO spawnerr: не могу найти команду 'cd/home/dotcloud/current/bipolar && django-admin.py celery worker --loglevel = INFO -E'' Пути правильные; выполнение команды с копированием в консоли снова приводит к 'ImportError: не удалось импортировать настройки 'bipolar.settings.dotcloud''. Но когда я вхожу в оболочку python в этом каталоге, я могу импортировать его просто отлично. –