2013-04-27 8 views
8

У меня есть сайт, написанный в bottle, и я хотел бы развернуть его через эластичный бобовый шлейф Amazon. Я следовал за tutorial for deploying flask, который, как я надеялся, был бы похож. я пытался адаптировать инструкции к бутылке, делая requirements.txt это:Невозможно получить бутылку для работы на эластичном бобовом стебле

bottle==0.11.6 

и заменить базовую версию Настоя application.py файла с этим:

from bottle import route, run 
@route('/') 
def hello(): 
    return "Hello World!" 
run(host='0.0.0.0', debug=True) 

Я обновленный к этому как указано в учебнике, и когда я написал eb status, он говорит, что он зеленый, но когда я иду на URL-адрес, ничего не загружается. Он просто висит там. Я попробовал метод run() в конце, как показано выше, а также как он написан в глобальном приложении для бутылочки hello (т.е. run(host='localhost', port=8080, debug=True)), и ни один из них не работал. Я также пробовал и @route('/hello'), и @route('/').

Я пошел и сделал это с флягой (т. Е. Точно так же, как говорится в учебнике Amazon), и все получилось отлично. Означает ли это, что я не могу использовать бутылку с эластичным бобовым стеблем? Или я могу что-то сделать, чтобы заставить его работать?

Спасибо большое, Alex

EDIT: С помощью aychedee, в конце концов, я получил его на работу, используя следующий файл приложения:

from bottle import route, run, default_app 
application = default_app() 
@route('/') 
def hello(): 
    return "Hello bottle World!" 

if __name__ == '__main__': 
    application.run(host='0.0.0.0', debug=True) 
+0

Ничего себе, вы полностью спасли мой день! – jbkkd

ответ

7

Возможно ли, что сервер WSGI ищет application переменная внутри application.py? Вот как я понимаю, что это работает для Flask.

application = bottle.default_app() 

Применяемая здесь переменная составляет WSGI application as specified in PEP 333. Это вызываемый объект, который принимает среду и функцию start_response. Таким образом, приложение Flask и Bottle WSGI имеют точно такой же интерфейс.

Возможно ... Но тогда я смущен, почему вам нужны и звонок по номеру run.

+0

Хм, может, beanstalk использует собственный сервер wsgi или тот, который встроен в колбу (или бутылку)? Всемирная программа hello [для фляжки] (http://flask.pocoo.org/docs/quickstart/) включает создание этого объекта приложения, в то время как [для бутылки] (http://bottlepy.org/docs/dev/ tutorial.html). Не уверен, могу ли я как-нибудь создать такой объект приложения для бутылки, и это может сработать? –

+0

Yup, вы можете попробовать. Линия, которую я включил в мой ответ, - это то, как вы получаете приложение WSGI из рамки бутылки. – aychedee

+0

Итак, я сделал это и немного поработал, но теперь он дает мне «Внутреннюю ошибку сервера», и он говорит «Сервер Apache/2.2.22 (Amazon) на test-env-ppamp7m3yc.elasticbeanstalk.com Port 80' at дно. Я не знал, что я даже запускаю Apache, разве не предполагается, что он запускает собственный тестовый сервер? –