gunicorn на привязке херуко к локальному хосту, не испортив развертывание на херуко

Это дополнительный вопрос от gunicorn on heroku: привязка к локальному хосту.

Как я могу заставить gunicorn работать как локально (с помощью мастера), так и для развертывания на Heroku?

Профайл содержит:

web: gunicorn mysite.wsgi

Когда я развертываю локально с помощью мастера, gunicorn привязывается к http://0.0.0.0:5000. Я хочу, чтобы он был привязан к 127.0.0.1:8000. Однако, если я перейду к Procfile на это:

web: gunicorn -b 127.0.0.1:8000 mysite.wsgi

Затем я не могу развернуться на Heroku, браузер вернет «ошибку приложения».

$ heroku ps
=== web (1X): `gunicorn -b 127.0.0.1:8000 mysite.wsgi`
web.1: crashed 2013/08/22 23:45:04 (~ 1m ago)

Где установлен адрес привязки по умолчанию и / или какие параметры пушки я могу добавить в Procfile, чтобы заставить его работать на 127.0.0.1? Что может быть уникальным для моей ситуации, что вызывает девиантную настройку по умолчанию (я работаю в Mac OS - может быть, лев?)


person Hamlet    schedule 25.08.2013    source источник


Ответы (1)


Не привязывайте gunicorn к локальному ip с помощью. web: gunicorn -b 127.0.0.1:8000 mysite.wsgi в вашем procfile. Это заставляет ваше приложение django всегда использовать этот локальный порт независимо от того, развернуто ли оно локально или на серверах Heroku.

С использованием

web: gunicorn mysite.wsgi

в вашем procfile заставит ваше приложение развернуться на 127.0.0.1:8000 локально и 0.0.0.0:5000 на серверах heroku. Я знаю, что в предыдущем вопросе вам пришлось использовать метод привязки, чтобы заставить heroku работать локально, но этот метод касается только проблемы, которая не решена.

Использование foreman start с web: gunicorn mysite.wsgi должно работать, согласно официальной документации (и моему собственному опыту :)) .

Попробуйте просто web: gunicorn mysite.wsgi в своем procfile, разверните его на героку и посмотрите, работает ли он.

https://devcenter.heroku.com/articles/python

person agconti    schedule 25.08.2013
comment
Еще раз спасибо за быстрый ответ. Я уже вернулся к той версии Procfile, которая работает и позволяет мне продолжать работу. Но тогда при локальном запуске я должен указать браузеру 0.0.0.0:5000, что кажется неправильным. Итак, я вернулся к исходной проблеме, которая, как вы говорите, имеет под собой проблему, которую еще предстоит решить. - person Hamlet; 26.08.2013
comment
+1 за возвращение. Итак, вы точно следовали документам и получили эту проблему? Есть ли что-нибудь в вашем приложении mysite, указывающее порт для запуска? (думаю нет). Возможно, стоит снова запустить пример с героку или создать очень простой тестовый проект, чтобы увидеть, будет ли у вас такое же странное поведение. - person agconti; 26.08.2013
comment
Это действительно самый простой проект. Один из первых шагов в руководстве по hellodjango (devcenter.heroku. ком/статьи/). Нет, в руководстве не требуется указывать порт, а на снимке экрана из примера показано, что он должен быть привязан к локальному хосту, а не к 0.0.0.0. - person Hamlet; 03.09.2013
comment
@ Гамлет Да, у меня была такая же проблема. Я собираюсь вернуться к этому на этой неделе. Я дам Вам знать. - person agconti; 03.09.2013
comment
кто-нибудь нашел решение для этого? точно такая же проблема - person lollercoaster; 07.08.2015
comment
@lollercoaster Я не совсем понимаю, зачем вам нужно привязывать свое приложение к локальному хосту, но вы можете запустить его с помощью этого: web: gunicorn --pythonpath="$PWD/you_app_name" wsgi:application - person agconti; 07.08.2015