Flask 构建 Web API Wheel(四)—— 项目结构组织及启动

Updated on in Python with 890 views

Flask 不像 Django,在创建项目后会有基本目录结构,Flask 需要根据自己的目录规划,来建立整体的结构,笔者组织整理了项目结构如下。

项目结构

- /app 应用包
  - /api 接口包
  - /config 配置包
  - /lib 工具包
    - enums.py 枚举模块
    - exception.py 异常处理模块
    - red_print.py 红图模块
    - token.py 令牌模块
    - schema.py 视图结构模块
  - /model 模型包
  - /patch 补丁包
  - /service 业务包
  - /static 静态资源目录
  - /template 模板目录
  - /validator 校验包
- /log 日志目录
- .flaskenv Flask环境变量文件
- .env 专属环境变量文件
- gconfig.py gunicorn配置
- Pipfile Pipenv依赖配置
- starter.py 启动文件

这里主要讲述下 Flask 的启动方式,官方文档使用的是 Flask-Cli 这一内置的命令行工具。

Flask-Cli

在之前有 Flask-Script 代替 Flask-Cli 的工作,并且很多项目目前也效仿如此,但 Flask 官方引入了 Click 提供指令支持,并且通过 flask-Cli 已经支持了一些指令比如最常用的flask run用于启动项目。

flask --help

"""
Commands:
  db      Perform database migrations.
  routes  Show the routes for the app.
  run     Run a development server.
  shell   Run a shell in the app context.
"""

Flask-Script 最大的作用是搭配 Flask-Migrate 进行数据库的迁移,现在有了 Flask-Cli 我们同样也可以这么做。

flask db init
flask db migrate
flask db upgrade

Flask-Cli 还可以通过 @app.cli.command() 来自定义指令,通过 @click.option() 增加指令参数,说到这里没有理由在重新用回 Flask-Script 了吧。

python-dotenv

fLask run 需要指定环境变量,这对不同环境开发来讲不是很方便,此时 python-dotenv 很好的解决了这一问题,这一依赖在上一节中已经安装。

python-dotenv 会自动装配项目根目录下的 .env.flaskenv 文件,且 .env 的优先级会比 .flaskenv 的优先级更高。当然我们也可以自己在 app 载入的时候指定所要加载的环境变量文件的名称,例如:

load_dotenv(dotenv_path='.flaskenv')

需要注意的是 .flaskenv.env 文件需要放置在启动器的同级目录,这里是项目的根目录。

# .flaskenv
FLASK_APP=starter:app
FLASK_RUN_HOST=0.0.0.0
FLASK_RUN_PORT=5000
FLASK_ENV=development
# production or development

标题:Flask 构建 Web API Wheel(四)—— 项目结构组织及启动
作者:Jeffrey

Responses
取消