Почему я получаю запрос на вход при развертывании примера приложения django-celery в dotcloud?

Я изо всех сил пытался заставить демо-приложение в django-celery работать на dotcloud. Я просмотрел учебник по адресу http://docs.dotcloud.com/0.9/tutorials/python/django-celery/, но это не очень помогает.

Пример приложения — это приложение Django 1.4. Я не уверен, почему, но когда я перехожу к развернутому приложению, вместо индексной страницы появляется всплывающее окно с именем пользователя и паролем. Сообщение во всплывающем окне

Сервер в TheDomain требует имя пользователя и пароль. Сервер говорит: Управление RabbitMQ.

Кто-нибудь знает, почему это поведение было добавлено?

Отличия от примера приложения django-celery:

# Django settings for project in settings.py

import os
import json
import djcelery

# Load the dotCloud environment
with open('/home/dotcloud/environment.json') as f:
  dotcloud_env = json.load(f)

# Configure Celery using the RabbitMQ credentials found in the dotCloud
# environment.
djcelery.setup_loader()
BROKER_HOST = dotcloud_env['DOTCLOUD_BROKER_AMQP_HOST']
BROKER_PORT = int(dotcloud_env['DOTCLOUD_BROKER_AMQP_PORT'])
BROKER_USER = dotcloud_env['DOTCLOUD_BROKER_AMQP_LOGIN']
BROKER_PASSWORD = dotcloud_env['DOTCLOUD_BROKER_AMQP_PASSWORD']
BROKER_VHOST = '/'

Вместо настроек базы данных в приложении я заменил настройки базы данных на.

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.postgresql_psycopg2',
        'NAME': 'template1',
        'USER': dotcloud_env['DOTCLOUD_DB_SQL_LOGIN'],
        'PASSWORD': dotcloud_env['DOTCLOUD_DB_SQL_PASSWORD'],
        'HOST': dotcloud_env['DOTCLOUD_DB_SQL_HOST'],
        'PORT': int(dotcloud_env['DOTCLOUD_DB_SQL_PORT']),
    }
}

Я также добавил файл requirements.txt с

Django==1.4
django-celery
setproctitle

и файл dotcloud.yml

www:
    type: python

broker:
    type: rabbitmq

workers:
    type: python-worker

db:
    type: postgresql

и supervisor.conf

[program:djcelery]
directory = $HOME/current/
command = python manage.py celeryd -E -l info -c 2
stderr_logfile = /var/log/supervisor/%(program_name)s_error.log
stdout_logfile = /var/log/supervisor/%(program_name)s.log

[program:celerycam]
directory = $HOME/current/
command = python manage.py celerycam
stderr_logfile = /var/log/supervisor/%(program_name)s_error.log
stdout_logfile = /var/log/supervisor/%(program_name)s.log

и в файл postinstall я добавил

dotcloud_get_env() {
    sed -n "/$1/ s/.*: \"\(.*\)\".*/\1/p" < "$HOME/environment.json"
}

setup_django_celery() {
    cat > $HOME/current/supervisord.conf << EOF
[program:djcelery]
directory = $HOME/current/
command = python manage.py celeryd -E -l info -c 2
stderr_logfile = /var/log/supervisor/%(program_name)s_error.log
stdout_logfile = /var/log/supervisor/%(program_name)s.log

[program:celerycam]
directory = $HOME/current/
command = python manage.py celerycam
stderr_logfile = /var/log/supervisor/%(program_name)s_error.log
stdout_logfile = /var/log/supervisor/%(program_name)s.log
EOF
}

if [ `dotcloud_get_env SERVICE_NAME` = workers ] ; then
    setup_django_celery
fi

последний fi был добавлен, но не в учебнике dotcloud.

Редактировать

Я собрал репозиторий с этим примером, так как, когда он работает, он должен быть весьма полезен для других. Он доступен по адресу: https://github.com/asunwatcher/django-celery-dotcloud.


person user714852    schedule 03.02.2013    source источник


Ответы (1)


Это похоже на ошибку в нашем CLI. Попробуйте dotcloud url, и вы увидите, что ваше приложение имеет два URL-адреса: один для вашей службы www, а другой для вашего rabbitMQ, который представляет собой интерфейс управления кроликом. Вы можете войти туда с именем пользователя и паролем кролика, указанным в среде dotCloud.

По какой-то причине мы выбрали не тот, чтобы показать вам в конце толчка. URL-адрес вашей службы www — это тот, который вам нужен.

person Andy    schedule 04.02.2013
comment
Ах, так просто. Спасибо за быстрый ответ. - person user714852; 05.02.2013