0

我没有manage.py使用不同的设置来在开发DJANGO_SETTINGS_MODULEdjango-admin.py生产环境之间切换。Django docs 和 pydanny 在“2 Scoops of Django”中都建议了这一点。

我的项目位于/home/dotcloud/current/bipolar. 我的设置在 中/home/dotcloud/current/bipolar/bipolar/settings/dotcloud.py,遵循 Django 1.5 目录结构。DJANGO_SETTINGS_MODuLE设置dotcloud.ymlbipolar.settings.dotcloud

我在运行 Dotcloud 时遇到了麻烦。当我只是按照示例教程进行操作时,我已经必须export PYTHONPATH=/home/dotcloud/current/(hellodjango|bipolar):$PYTHONPATHpostinstall脚本中添加一个。

当使用主管启动 celery 时,事情变得非常棘手。我正在尝试运行命令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我已经尝试将东西移动到一个shell脚本,在运行它之前设置路径......毕竟这适用于!并且在shell上运行它确实可以工作,但是在机器部署时它就不起作用了。

所以建议任何帮助!

编辑:我已经尝试了多种方法。我重新添加了一个 manage.py ,它都设置了正确的sys.pathand DJANGO_SETTINGS_MODULE,但无济于事。最后,我添加了一个python-worker服务,除了失败两倍之外什么也没做(supervisord.conf 在两个服务上都被读取,对吧?)。

4

2 回答 2

0

我知道这可能行不通,但您是否尝试过:

command = "cd /home/dotcloud/current/bipolar && django-admin.py celery worker --loglevel=INFO -E"
于 2013-03-14T05:20:39.587 回答
0

结果证明文档是错误的。一个不能directory = $HOME/current/supervisord.conf。替换它,/home/dotcloud/current/你就可以开始了。

我仍然无法django-admin.py上班;我假设它是用 virtualenv 之外的 Python 二进制文件调用的。我觉得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
于 2013-03-14T09:52:27.700 回答