【问题标题】:Can't get bottle to run on Elastic Beanstalk无法让瓶子在 Elastic Beanstalk 上运行
【发布时间】:2013-04-21 21:40:32
【问题描述】:

我有一个用 bottle 编写的网站,我想通过 Amazon 的 Elastic Beanstalk 部署它。我关注了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() 方法,如上所示,以及它是如何在bottle hello world 应用程序中编写的(即run(host='localhost', port=8080, debug=True)),但似乎都不起作用。我还尝试了@route('/hello')@route('/')

我用烧瓶代替(即就像亚马逊教程所说的那样),它工作得很好。这是否意味着我不能使用带有弹性豆茎的瓶子?或者我可以做些什么来让它发挥作用?

非常感谢, 亚历克斯

编辑: 在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)

【问题讨论】:

  • 哇,你完全拯救了我的一天!

标签: python flask bottle amazon-elastic-beanstalk


【解决方案1】:

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

application = bottle.default_app()

这里的应用程序变量是WSGI application as specified in PEP 333。它是一个接受环境和 start_response 函数的可调用对象。因此 Flask 和 Bottle WSGI 应用程序具有完全相同的界面。

可能...但是我很困惑为什么你需要那个run的调用。

【讨论】:

  • 嗯,也许,beantalk 使用自己的 wsgi 服务器还是烧瓶(或瓶子)内置的服务器? hello world 程序for flask 涉及创建应用程序对象,而the one for bottle 没有。不确定我是否也能以某种方式为瓶子制作一个像这样的应用程序对象,这是否可行?
  • 是的,你可以试试。我在回答中包含的内容是如何从瓶子框架中获取 WSGI 应用程序。
  • 好的,我这样做了,并且走得更远,但现在它给了我一个“内部服务器错误”,它在底部显示Apache/2.2.22 (Amazon) Server at test-env-ppamp7m3yc.elasticbeanstalk.com Port 80。我什至不知道我在运行 Apache,它不应该运行自己的测试服务器吗?
  • 酷,这样就可以解决它。现在您遇到了不同的问题,您应该将此问题标记为已回答并再次询问您的新症状。我不打算在 cmets 中进行问答。虽然我会说您需要做的第一件事是阅读有关如何启用日志记录的信息 (docs.aws.amazon.com/elasticbeanstalk/latest/dg/…)。您需要阅读以解决此问题的堆栈跟踪只会显示在日志文件中。
  • 哦,是的,Elastic Beanstalk 是基于 Apache 和 Mod wsgi 构建的。
猜你喜欢
  • 2013-06-13
  • 2019-02-23
  • 2018-04-12
  • 2018-01-29
  • 2014-08-22
  • 2021-04-20
  • 2014-06-02
  • 2019-03-14
  • 2014-12-26
相关资源
最近更新 更多