在 ec2 实例上部署 Flask 应用程序(换句话说,在任何计算机上运行脚本)和通过 AWS Elastic Beanstalk 部署 Flask 应用程序有什么区别?烧瓶部署文档 http://flask.pocoo.org/docs/0.12/deploying/说:
Flask 的内置服务器虽然轻量且易于使用,但并不
适合生产,因为它不能很好地扩展并且默认情况下服务
一次只有一个请求。一些可正确使用的选项
在生产中运行 Flask 记录在此处。
他们推荐的部署选项之一是 AWS Elastic Beanstalk。当我读完亚马逊的解释 http://docs.aws.amazon.com/elasticbeanstalk/latest/dg/create-deploy-python-flask.html然而,如何部署 Flask 应用程序,它们似乎are使用与 Flask 内置的完全相同的服务器应用程序,例如它是单线程的,因此无法处理同时请求。据我了解,Elastic Beanstalk 允许您部署多个副本,但它似乎仍然使用内置的 Flask 服务器应用程序。我缺少什么?
TL;DR 完全不同 - Elastic Beanstalkdoes使用比 Flask 开发服务器更好的明智的 WSGI 运行器!
然而,当我阅读 Amazon 关于如何部署 Flask 应用程序的解释时,似乎他们正在使用与 Flask 内置的完全相同的服务器应用程序
几乎,但不完全是。
你可以确认这个isn't通过自己删除 run-with-built-in-server 部分来解决这种情况 - 即示例中的以下内容:
if __name__ == "__main__":
# Setting debug to True enables debug output. This line should be
# removed before deploying a production app.
application.debug = True
application.run()
您将无法在本地自行运行它python application.py
但它仍然可以在 EB 上愉快地运行!
EB Python 平台使用自己的 WSGI 服务器(带有 mod_wsgi 的 Apache,我上次查看)和一些假设/配置来查找可调用的 WSGI:
From 为 Elastic Beanstalk 配置 Python 项目 http://docs.aws.amazon.com/elasticbeanstalk/latest/dg/create-deploy-python-common-steps.html#python-common-configuring:
默认情况下,Elastic Beanstalk 会查找名为 application.py 的文件来启动您的应用程序。如果您创建的 Python 项目中不存在该文件,则需要对应用程序环境进行一些调整。
如果你签出的文档aws:elasticbeanstalk:container:python名称空间 http://docs.aws.amazon.com/elasticbeanstalk/latest/dg/command-options-specific.html#command-options-python您将看到可以将其配置为在其他地方查找 WSGI 应用程序:
WSGIPath
:包含 WSGI 应用程序的文件。该文件必须具有可调用的“应用程序”。默认:application.py
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)