项目地址: https://github.com/monklof/flaskproject-in-production
简要介绍一下,有兴趣的同学可以点进去看看:
这是一个较小的 Flask Demo ,集成了一些在基于 Flask 开发部署 Web 应用时非常有用的功能,基于它,你可以快速开始写一个 Flask 应用并应用到生产环境下。
Flask 本身是一个轻量级的 Web 框架,提供了 Web 请求处理的基本框架,能帮助开发者解决许多在 HTTP 请求处理层面上的许多问题。但在实际的工程中,我们往往需要做更多的工作来使得基于 Flask 的应用能够应用到生产环境下。譬如:
- 用户认证: 有些资源 /页面访问时需要进行认证,而这个过程其实是比较通用的,能否把这个功能集成好呢?
- 程序配置管理: 线下开发和线上部署时程序往往要使用不同的配置(比如常见的情况就是线下开发需要指向线下数据库,而线上需要指向线上数据库),能否提供一种通用的配置方式呢?使得程序可以方便的进行配置切换?
- 生产环境下的部署: Flask 自带的调试 server 是单线程的,一个请求阻塞后之后的请求都会被卡住,在生产环境下肯定不能使用这个 server 。通常我们会选择使用[Gunicorn][gunicorn]这样的服务器来作为生产环境下的并发方案,这个功能也可以集成起来。
- 日志文件管理: 在生产环境下,往往要记录程序的访问日志、出错日志、应用日志以方便进行问题定位。而 Flask 是没有提供这样的机制的,往往还需要开发者再去开发这样的功能。
我相信这些功能,是一个健康成熟的线上生产应用的通用需求。 FIP 将这些功能集成起来,以方便开发者开发时,不再需要再关注这些通用性的问题,而将关注点切换至更高层次上解决问题,提高开发效率。