无法让瓶子在Elastic Beanstalk上运行

Ale*_*x S 8 python bottle flask amazon-elastic-beanstalk

我有一个用瓶子写的网站,我想通过亚马逊的Elastic Beanstalk部署它.我按照教程部署了烧瓶,我希望它类似.我尝试通过制作requirements.txt来使说明适应瓶子:

bottle==0.11.6
Run Code Online (Sandbox Code Playgroud)

并用以下代码替换了application.py文件的基本烧瓶版本:

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

我按照教程中的说明更新到这个版本,当我写eb status它时它说它是绿色的,但是当我去URL时没有任何加载.它只是挂在那里.我在最后尝试了run()方法,如上所示,以及它是如何在瓶子hello world应用程序中编写的(即run(host='localhost', port=8080, debug=True)),似乎都不起作用.我也试过@route('/hello')@route('/').

我转而用烧瓶做了(就像亚马逊教程所说的那样)并且它工作正常.这是否意味着我不能使用带有弹性豆茎的瓶子?或者我可以做些什么让它起作用?

非常感谢,Alex

编辑:在yychedee的帮助下,我最终使用以下应用程序文件使其工作:

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)
Run Code Online (Sandbox Code Playgroud)

ayc*_*dee 7

WSGI服务器是否可能在application内部寻找变量application.py?这就是我理解它适用于Flask的方式.

application = bottle.default_app()
Run Code Online (Sandbox Code Playgroud)

这里的应用程序变量是PEP 333中指定WSGI应用程序.它是一个可调用的环境和start_response函数.因此Flask和Bottle WSGI应用程序具有完全相同的界面.

可能......但是后来我很困惑为什么你需要那个那个号召run.