flask框架简单web服务真实项目实践

最近来到新公司,学习了下flask,web服务加docker部署,记录一下

使用前部署
#虚拟环境
mkvirtualenv #创建虚拟环境
rmvirtualenv #删除虚拟环境
workon #进入虚拟环境、查看所有虚拟环境
deactivate #退出虚拟环境

#pip
pip install #安装依赖包
pip uninstall #卸载依赖包
pip list #查看已安装的依赖包
pifreeze #冻结当前环境的依赖包

因为这家公司跟我之前不一样业务写的比较多,刚好维护之前的项目

1.考虑业务规模,如果业务量大使用蓝图
flask蓝图:蓝图可以将应用程序分解为多个模块,每个模块可以独立开发、测试和维护,使代码组织更加清晰。
代码复用性更高:蓝图可以被多个应用程序使用,提高了代码的复用性。
路由管理更方便:蓝图可以定义自己的路由,使路由管理更加方便,同时也可以更好地控制 URL。
蓝图可以使应用程序的开发、测试和维护更加简单、灵活和高效。

然后设施日志格式
设置数据库配置
设置返回的失败请求页面

1.首先设置一下不同环境的数据库(开发环境配置,预生产环境配置,生产环境配置)
在这里插入图片描述
2.设置一下 Flask 蓝图中的错误处理函数,用于处理 HTTP 错误。代码中定义了三个函数分别对应 HTTP 状态码 403、404、500
在这里插入图片描述
这些函数都使用 @doc.app_errorhandler 装饰器来注册到 doc 蓝图中。这样,当出现对应的 HTTP 错误时,Flask 就会调用相应的错误处理函数来进行处理。

每个错误处理函数都先判断请求的 Accept header 是否为 JSON 格式,如果是,则返回 JSON 格式的错误信息;否则返回 HTML 格式的错误页面。其中,request.accept_mimetypes 表示请求的 Accept header,accept_json 和 accept_html 分别表示是否接受 JSON 和 HTML 格式的响应。如果同时接受 JSON 和 HTML 格式的响应,则默认返回 HTML 格式的错误页面。

在返回 JSON 格式的错误信息时,使用 jsonify 函数将字典类型的错误信息转换为 JSON 格式。在返回 HTML 格式的错误页面时,使用 render_template 函数渲染对应的 HTML 模板,并指定 HTTP 状态码。

3.配置一下日志
在这里插入图片描述
在这里插入图片描述

  1. 导入了create_app()函数,用于创建Flask应用程序。
  2. 导入了dictConfig()函数,用于配置日志记录。
  3. 使用dictConfig()函数配置了日志记录,包括设置日志输出样式、控制台输出和日志文件输出等。
  4. 创建了Flask应用程序对象。

4.注册蓝图

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

  1. 导入了osFlaskdotenvconfig模块。
  2. 创建了create_app()函数,用于创建Flask应用程序对象。
  3. 加载了环境变量。
  4. 根据不同的环境变量加载不同的配置。
  5. 注册了docpcmpwjf三个蓝图。
  6. 返回了Flask应用程序对象。
  7. 总结:主要作用是创建一个Flask应用程序对象,并根据环境变量加载不同的配置,同时注册了三个蓝图
    在这里插入图片描述
    在这里插入图片描述
    开始实现接口

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
到这里熟悉flask的应该就懂了

接下来配置Gunicorn,一个Python的Web服务器,它可以处理多个并发请求。

在这里插入图片描述

绑定的IP地址和端口号
backlog参数
timeout参数
worker_class参数
worker进程数
线程数
日志级别
访问日志格式
访问日志文件路径
错误日志文件路径
X-Forwarded-For头部的名称
这些参数可以根据具体的需求进行设置,以优化服务器性能和日志记录。

worker_class 的值应该根据您的应用程序和实际情况进行设置。Gunicorn 支持多种 Worker 类型,例如 gevent、sync、eventlet 等,每种 Worker 类型都有不同的特点和适用场景。

如果您的应用程序是基于 IO 操作的,例如网络请求、数据库查询等,那么使用 gevent Worker 类型可以提高并发能力和性能。而如果您的应用程序是 CPU 密集型的,例如加密算法、图像处理等,那么使用 sync Worker 类型可能更加适合。

因此,您应该根据您的应用程序的特点和实际情况选择合适的 Worker 类型。如果您不确定应该选择哪种 Worker 类型,可以先使用默认的 sync Worker 类型进行测试和调试,然后根据实际情况进行调整。

这里就差不多了,我做的这个项目主要是爬取数据到本地,然后写接口做数据回填,业务比较多,这个项目到今天位置应该差不多结束了,大概30多个接口

在这里插入图片描述
这里是添加新的项目

以前用flask都是做做简单的接口,这算是第一次用他来做web二次开发(记录一下)

下面是配置docker,配置大家自己百度一下就好了,这里说一下简单的部署
配置Dockerfile

在这里插入图片描述

  1. 基于 192.168.xxxxx/crawler_python/python:v1 镜像构建新镜像。
  2. 设置环境变量 LANGC.UTF-8
  3. 设置环境变量 envtest
  4. 使用 pip 设置镜像源为百度镜像,并卸载旧版本 pycryptodome,安装新版本 pycryptodomeopenpyxlpandaspy_mini_racer
  5. 创建文件夹 /court_crawler/logs
  6. 设置工作目录为 /court_crawler
  7. 拷贝当前目录下的所有文件到 /court_crawler 目录下。
  8. 对外暴露端口 5000
  9. 容器启动时运行 CMD 命令,使用 gunicorn 启动 Flask 应用,加载配置文件 gun.py,监听 5000 端口,设置环境变量 FLASK_ENVIRONMENTtest

1.真实项目禁止转载,也希望大家多多指点一下(小白求指点)
个人感悟
2.目前来到新公司快1个半月了,业务跟我之前公司差距很大,唯一相同的就是爬取数据到数据库了,业务偏多.因为公司就我一个py,所以工作中没有啥学习机会,主要是锻炼业务逻辑,后面也是买买课学习下安卓了,学无止境太卷了

  • 2
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值