之前介绍过flask框架的基础应用,这篇主要介绍下项目中flask框架里的实操应用,如果对您有用,请记得关注,点赞,同时也欢迎大家留言讨论。
ps: 为方便,用的pycharm,windows演示的。
项目结构技巧
先贴出演示项目的目录
app文件夹主要存放项目中的主要代码
- models文件夹存放数据模型类的文件(数据库的表模型)
- static 存放静态资源(一般不用了)
- templates 常用存放html资源文件
- utils 存放一些要用的工具类文件
- views 存放视图类文件(路由)
scheduler 文件夹主要存放一些项目中要用到的定时脚本
worker 文件夹主要存放一些项目中要用到的异步耗时任务
app.py 文件为项目的启动文件
config.py 文件为项目的配置文件
xxxx.sh文件为封装的启动脚本
装饰器使用技巧
装饰器在flask项目中常用的有4个地方
- 蓝图中的路由使用到这个。如上图的index.route()
- 用户鉴权用到这个.如上图的auth_login()
- 在使用装饰器后,为了保留原函数的属性,使用functools.wraps(method),如果不加这个的话,index.name 返回的结果是wrapper而不是index.
- 在异步脚本中使用,celery.task标记是一个celery类型任务函数
日志服务使用技巧
项目中主要是封装logger模块来实现日志,大致流程就是
- 创建一个logger对象,定义logger的等级。
- 创建日志流对象,设置流对象的格式
- 在logger对象的执行任务中增加流对象输出。
样式如下图:
正常工作中还会根据日志的等级把日志存到文件中,例如把info和debug存到1个文件。error存到一个文件中。
更完善点的 会接入预警模块 类似centry模块实时给开发者发送错误提醒。
异步脚本使用技巧
这里异步脚本 一般我用的是celery模块实现。
使用规则很简单。
- config.py中配置celery参数。
- 异步任务函数用celery.task()装饰器修饰。
- 调用函数的时候 用 函数名.apply_async((),{},countdown=延时时间) 去执行
- 提前开启异步任务脚本 python -m celery --app=worker.celery worker -c 8 --loglevel=info
如果是在windows上学习,需要
pip install eventlet
python -m celery --app=worker.celery worker -c 8 --loglevel=info -P eventlet
定时器使用技巧
定时器功能的实现我用的是 apscheduler
使用流程主要是
- 设置定时器的线程数量,创建定时器对象
- 编写定时任务代码,添加到定时器对象中
- 启动定时器任务
当然 为了看到日志,需要加上日志功能,流程和日志功能一样。演示中我定时了一个3秒一次的定时任务。输出如下。
以上大致说了下项目中的一些功能模块的使用方法。后面再针对每个模块详细再讲些下。
附上演示项目代码
链接: 项目代码github地址.
希望对大家有帮助。