当前位置: 首页 > news >正文

flask+python快速搭建

app.py

"""APP 入口模块"""
from traceback import format_excfrom api_limiter import limiter
from flask import Flask, jsonify
import loggingfrom controller import api_sql_blueapp = Flask(__name__)
limiter.init_app(app)
app.register_blueprint(api_sql_blue)@app.errorhandler(Exception)
def handle_exception(e):"""处理所有异常"""logging.error(format_exc())# 返回 JSON 错误响应return jsonify(error=str(e)), 500if __name__ == '__main__':app.run(debug=True,threaded=True)

controller.py

from flask import Blueprint, make_responsefrom response_dic import ResDic
from api_limiter import limiter
from flask import jsonify, request
from functools import wraps
from jsonschema import validate, ValidationErrorfrom sql_service import sql_import_deal, sql_query_dealapi_sql_blue = Blueprint('sql', __name__)def validate_json_and_schema(schema):"""验证请求数据是否是JSON格式,以及是否符合schema"""def decorator(f):@wraps(f)def wrapper(*args, **kwargs):if request.is_json:data = request.get_json()try:validate(instance=data, schema=schema)except ValidationError as e_validation:return jsonify(ResDic.from_params(code="400", msg=str(e_validation))), 200return f(*args, **kwargs)else:return jsonify(ResDic.from_params(code="400", msg="请求数据不是JSON格式")), 200return wrapperreturn decoratordef header_required(func):@wraps(func)def decorated_function(*args, **kwargs):authorization_header = request.headers.get('Authorization')if not authorization_header:return jsonify(ResDic.from_params(code="401", msg="请求参数异常")), 200return func(*args, **kwargs)return decorated_function@api_sql_blue.route('/import', methods=['POST'])
@validate_json_and_schema({"type": "object","properties": {"sql_txt": {"type": "string"}},"required": ["sql_txt"],
})
@limiter.limit("5/second", override_defaults=False)  # 一秒5次
@header_required
def sql_import():req_json_data = request.get_json()req = req_json_data["sql_txt"]result = sql_import_deal(req)response_data = jsonify(ResDic.from_params(code="0", data=result))response = make_response(response_data)return response@api_sql_blue.route('/query', methods=['POST'])
@limiter.limit("5/second", override_defaults=False)  # 一秒5次
@header_required
@validate_json_and_schema({"type": "object","properties": {"question": {"type": "string"}},"required": ["question"],
})
def sql_query():req_json_data = request.get_json()req = req_json_data["question"]result = sql_query_deal(req)response_data = jsonify(ResDic.from_params(code="0", data=result))response = make_response(response_data)return response

api_limiter.py

from flask_limiter import Limiter
from flask_limiter.util import get_remote_addresslimiter = Limiter(key_func=get_remote_address,default_limits=["50000 per day", "3600 per hour"]
)

response_dic.py

class ResDic:def __init__(self, code, data, msg):self.code = codeself.data = dataself.msg = msg@classmethoddef from_params(cls, code="200", data="", msg=""):return {"code": code, "data": data,"msg": msg}

sql_service.py

def sql_import_deal(req:str):return "import"def sql_query_deal(req:str):return "query"

config_utils.py

from dotenv import load_dotenv
import osload_dotenv('.env')  # 先加载默认的 .env 文件APP_ENV = os.environ.get('APP_ENV', 'dev').lower()
load_dotenv(f'.env_{APP_ENV}', override=True)  # 再加载环境相关的,def get_config(key: str) -> str:return os.environ.get(key)

.env

OPENAI_API_KEY=""

requirements.txt

Flask==2.3.2
Flask-Limiter==3.3.1
gevent==22.10.2
gunicorn==20.1.0
jsonschema==4.18.0
jsonschema-specifications==2023.6.1
numpy==1.23.5
numexpr==2.8.4
openai==0.27.4
openapi-schema-pydantic==1.2.4
py-healthcheck==1.10.1
pydantic==1.10.7
pydub==0.25.1
faiss-cpu==1.7.4
typing-inspect==0.8.0
typing_extensions==4.5.0
tiktoken==0.4.0
beautifulsoup4==4.12.2
gradio==3.36.1
pytest==7.4.0
python-dotenv==1.0.0
pymysql==1.1.0
urllib3==1.25.11

相关文章:

flask+python快速搭建

app.py """APP 入口模块""" from traceback import format_excfrom api_limiter import limiter from flask import Flask, jsonify import loggingfrom controller import api_sql_blueapp Flask(__name__) limiter.init_app(app) app.regist…...

基于微信小程序的美术馆预约平台设计与实现(源码+lw+部署文档+讲解等)

前言 💗博主介绍:✌全网粉丝10W,CSDN特邀作者、博客专家、CSDN新星计划导师、全栈领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战✌💗 👇🏻…...

ruoyi-vue-pro yudao 项目商城 mall 模块启用及相关SQL脚本

目前ruoyi-vue-pro 项目虽然开源,但是商城 mall 模块被屏蔽了,查看文档却要收费 199元(知识星球),价格有点太高了吧。 分享下如何启用 mall 模块,顺便贴上sql相关脚本。 一、启用模块 修改根目录 pom.xm…...

default 和 delete 与默认构造函数 的使用

前言 使用default和delete关键字来干预编译器自动生成的函数。让我详细解释一下这些知识点: 正文 编译器生成的默认构造函数: 如果类A没有定义任何构造函数,那么编译器会自动生成一个无参的默认构造函数 A()。这个默认构造函数实际上是一个…...

【开发篇】一、热部署

文章目录 1、手工启动热部署2、自动启动热部署3、热部署范围配置4、关闭热部署功能 1、手工启动热部署 日常开发与调试&#xff0c;改几行代码想看效果就得手动点重启&#xff0c;很繁琐&#xff0c;接下来考虑启动热部署。首先引入springboot开发者工具&#xff1a; <dep…...

点云从入门到精通技术详解100篇-定子装配过程中基于深度学习的易变形材料的点云分割(下)

目录 4.3.2 校正网络 4.3.3 浅层特征提取网络 4.3.4 空间边界 Transformer 深层特征提取网络 4.3.5 损失函数...

谷歌浏览器关闭自动更新功能

背景&#xff1a;自动化测试需要下载webdriver驱动&#xff0c;然而浏览器自动更新会导致原来的驱动版本与现有浏览器版本不匹配&#xff0c;所以要禁用掉浏览器自动更新功能。 1.右键-我的电脑-打开管理&#xff1b; 2.选择任务计划程序-任务计划程序库-找到两个chrome自动更新…...

电商业务--技术负责人 250K*15

职位描述 研发团队管理 系统搭建 技术管理 系统架构 岗位职责 负责/参与到中大型负责系统的整体架构和设计&#xff1b; 根据业务特点和行业最佳实践&#xff0c;设计符合多个市场物流业务需求&#xff0c;且具备可扩展能力的系统架构和业务架构承担团队稳定性建设工作&#…...

MySQL只同步单个表或多个表,非全部同步!

replicate-do-table 是 MySQL 复制配置中的一个选项&#xff0c;它允许您指定要在从服务器上复制的表。如果您想要只复制主服务器上特定的表到从服务器&#xff0c;您可以使用这个选项。 以下是如何操作 replicate-do-table 的步骤&#xff1a; 停止从服务器: 在从服务器上执行…...

【论文基本功】【LaTeX】个人常用易忘LaTeX命令

【论文基本功】【LaTeX】个人常用易忘LaTeX命令 1. 基本符号2. 引用3. 字体及符号大小4. 其他参考 1. 基本符号 符号LaTeX命令备注 ∣ ⋅ ∣ | \cdot | ∣⋅∣| \cdot |绝对值 ∣ ∣ ⋅ ∣ ∣ || \cdot || ∣∣⋅∣∣\| \cdot \|范数 ⌈ ⋅ ⌉ \lceil \cdot \rceil ⌈⋅⌉\lce…...

JVM参数调优——G1收集器

开启 G1 Collector G1收集器的出现除了提供可控的低延迟GC&#xff0c;解决历史收集器的一些弊病&#xff0c;同时还尽力简化调优参数 对于大多数应用&#xff0c;开启收集器&#xff0c;再配置一下Xms和Xmx就足够了&#xff08;不建议配置Xmn&#xff09; -XX:UseG1GC核心参…...

Linux cp命令使用指南:详细教程及实际应用场景解析

文章目录 Linux中的cp命令使用指南1. 简介1.1 Linux操作系统简介1.2 文件系统和目录结构1.3 cp命令概述 2. cp命令基本用法2.1 复制文件2.2 复制目录2.3 复制多个文件或目录2.4 递归复制2.5 强制覆盖已存在文件2.6 保留文件权限和属性 3. 高级用法3.1 保留符号链接3.2 仅复制更…...

树结构数据在table中回显 treeselect disabled

<el-table-column label"产业认定" align"center" prop"industryIdentification"><template slot-scope"scope"><treeselectv-if"scope.row.industryIdentification"v-model"scope.row.industryIdentif…...

BOA服务器移植

BOA服务器移植 1、源码下载 http://www.boa.org/ News! (last updated 23 February 2005) Latest Released Version (0.94.13) here (signature here) --- 下载地址1.1 boa简介&#xff1a; 其可执行代码只有大约60KB左右&#xff0c;Boa是一个单任务的HTTP服务器&#xff…...

洛谷刷题入门篇:顺序结构

链接如下&#xff1a;https://www.luogu.com.cn/training/100#problems 一、Hello,World! 题目链接&#xff1a;https://www.luogu.com.cn/problem/B2002 题目描述 编写一个能够输出 Hello,World! 的程序。 提示&#xff1a; 使用英文标点符号&#xff1b;Hello,World! 逗…...

LVS+Haproxy

LVSHaproxy 一、Haproxy简介1.1、Haproxy应用分析1.2、Haproxy的特性1.3、常见负载均衡策略1.4、LVS、Haproxy、Nginx区别1.5、 Haproxy的优点1.6、常见的Web集群调度器 二、Haproxy部署实例四、日志定义优化 一、Haproxy简介 Haproxy 是一个使用C语言编写的自由及开放源代码软…...

Linux知识

文章目录 一、Apt1、查看操作系统信息2、换源3、比较4、用法5、ubuntu获取源码 二、pkg-config三、调试glibc 一、Apt 1、查看操作系统信息 使用以下命令查看本机的操作系统和位数信息&#xff1a; uname -m && cat /etc/*release输出&#xff1a; x86_64 DISTRIB_I…...

Java基础(三)

前言&#xff1a;前面主要涉及到java的基本语法&#xff0c;接下来本篇博客主要记录Java中Collections类、泛型、以及File类、IO流的学习。 目录 数据结构 泛型 集合 分类 Collection的分类 collection常用方法 collection遍历方式 迭代器 for循环 Lambda表达式 Lis…...

[Firefox/快捷键] 禁用Ctrl-W快捷键

最近给Firefox这一快捷键坑了几次。恰好发现在CMU也有人遇到类似的烦恼&#xff0c;找到一篇基于Linux的教程。 我使用的是Windows&#xff0c;所以根据自己的情况做了些修改&#xff0c;成功了。小众需求就犯懒直接将笔记贴上了&#xff0c;如果有谁用得上的话&#xff0c;我写…...

Git常用命令diff和mv

Git常用命令diff和mv 1、diff # 查看工作区和暂存区所有文件的对比 # 该命令可以显示尚未添加到stage的文件的变更 $ git diff# 查看工作区和暂存区单个文件的对比 $ git diff file# 显示暂存区和上一个commit的差异 # 查看暂存区与指定提交版本的不同,版本可缺省为HEAD $ gi…...

【谢希尔 计算机网络】第3章 数据链路层

数据链路层 数据链路层的地位 网络中的主机、路由器等都必须实现数据链路层局域网中的主机、交换机等都必须实现数据链路层不同链路层可能采用不同的数据链路层协议 数据链路层信道类型 点对点信道 使用一对一的点对点通信方式广播通信 必须使用专用的共享系电脑协议来协调这些…...

《DevOps实践指南》- 读书笔记(九)

DevOps实践指南 25. 附录附录 1 DevOps 的大融合精益运动敏捷运动Velocity 大会运动敏捷基础设施运动持续交付运动丰田套路运动精益创业运动精益用户体验运动Rugged Computing 运动 附录 2 约束理论和核心的长期冲突附录 3 恶性循环列表附录 4 交接和队列的危害附录 5 工业安全…...

数据库数据恢复-SQL SERVER数据库分区被格式化的数据恢复方案

SQL SERVER数据库故障类型&#xff1a; 1、SQL SERVER数据库文件被删除。 2、SQL SERVER数据库所在分区格式化。 3、SQL SERVER数据库文件大小变为“0”。 4、使用备份还原数据库时覆盖原数据库。 SQL SERVER数据库故障原因&#xff1a; 1、人为误操作。 2、文件系统损坏&#…...

ubuntu安装ffmpeg

Ubuntu安装FFMPEG Ubuntu安装FFMPEG 安装FFMPEG&#xff08;支持GPU加速&#xff09; 1.安装ffnvvodec2.安装libx2643.安装ffmpeg4.查看并测试5.卸载 安装FFMPEG&#xff08;CPU版本&#xff09; 安装FFMPEG&#xff08;支持GPU加速&#xff09; 默认已经安装cuda10.2、cud…...

CentOS上安装Docker

要在CentOS上安装Docker&#xff0c;可以按照以下步骤进行操作&#xff1a; 更新系统软件包列表&#xff1a; sudo yum update安装必要的软件包&#xff0c;以便可以通过HTTPS使用仓库并使用最新的内核&#xff1a; sudo yum install -y yum-utils device-mapper-persistent…...

三相PWM整流器有限集模型预测电流控制MATLAB仿真模型

微❤关注“电气仔推送”获得资料 模型简介&#xff1a; 整流器交流侧为三相对称电压&#xff0c;220V/50Hz&#xff0c;直流侧为760V&#xff0c;且电压可调。其中模型预测模块采用matlab-function模块实现&#xff0c;交流侧电感的标称值为0.01H&#xff0c;如果不是&#x…...

【JavaEE】多线程(三)

多线程&#xff08;三&#xff09; 续上文&#xff0c;多线程&#xff08;二&#xff09;&#xff0c;我们已经讲了 创建线程Thread的一些重要的属性和方法 那么接下来&#xff0c;我们继续来体会了解多线程吧~ 文章目录 多线程&#xff08;三&#xff09;线程启动 startsta…...

9.25day5---Qt

登录页面设计&#xff0c;建立用户注册以及登录的数据库&#xff0c;数据库保存用户名和密码 &#xff08;ps:本篇只完成了登录功能&#xff0c;其他功能&#xff0c;请见下篇嘿嘿。&#xff09; 再次注册则失败&#xff1a; 代码如下&#xff1a; 头文件&#xff1a; 登录…...

wpf制作自定义控件,并触发外部路由事件

目的是在前端增加一个自定义控件里的button后&#xff0c;按下动作可以调用使用该控件的页面的事件 首先在前端增加自定义控件里加入一个button&#xff0c;在其cs页面里注册点击事件 var btnAdd GetTemplateChild("btnAdd") as FlatButton;if (btnAdd ! null){btn…...

axios全局路由拦截的设置方法

一个项目中如果http请求发生了错误/异常&#xff0c;比如返回码4xx&#xff08;表示没有授权&#xff0c;登录过期等&#xff09;&#xff0c;我们希望能够在axios在第一时间就能拦截获取到&#xff0c;然后直接提示报错的错误信息&#xff0c;而不是在发起请求的地方&#xff…...

微网站开发不用模板/外贸公司如何做推广

展开全部/*** version 1.0* author 韩卫召62616964757a686964616fe59b9ee7ad9431333236393137** 多种方式读文件的内容* 按字节读取文件内容,按字符读取文件的内容,按行读取文件的内容,随即读取文件的内容*/import java.io.BufferedReader;import java.io.File;import java.io.…...

wordpress小说插件/在线生成个人网站

文章目录Metasploit 简介诞生与发展技术架构辅助模块渗透攻击模块攻击载荷模块空指令模块编码器模块后渗透攻击模块免杀模块为什么使用Metasploit&#xff1f;情报搜集阶段威胁建模阶段漏洞分析阶段后渗透攻击阶段报告生成阶段Metasploit 的使用启动MSF情报搜集网站敏感目录扫描…...

网站后台如何添加附件/seo服务外包公司

设计 Java 的接口 在设计 LOL 的时候&#xff0c;进攻类英雄有两种&#xff0c;一种是进行物理系攻击&#xff0c;一种是进行魔法系攻击 这时候&#xff0c;就可以使用接口来实现这个效果。 接口就像是一种约定&#xff0c;我们约定某些英雄是物理系英雄&#xff0c;那么他们…...

网站建设里面链接打不开/免费的郑州网络推广服务

实战需求 SwiftUI macos 教程之如何设置TextView行间距 参考代码 let myStyle NSMutableParagraphStyle()myStyle.lineSpacing 10.0textView.defaultParagraphStyle myStyle加入我们一起学习SwiftUI QQ:3365059189 SwiftUI技术交流QQ群:518696470...

wd设计视图可以做网站吗/刷关键词的平台

不知道大家对Buffer了解多少&#xff0c;很多人对这个概念都比较模糊&#xff0c;尤其是在asp中。很多初学者在编写asp程序时很少用到这条语句&#xff0c;下面我就来说说Buffer的用途以及它在asp程序中的作用。一、BufferBuffer从英文直译过来的意思是“缓冲区”&#xff0c;这…...

wordpress typecho 大数据库/外包网站

Solr实现全文搜索SolrApache Solr特点搜索引擎搜索引擎组件搜索引擎工作流程分词技术中文分词算法基于字符串匹配基于统计及机器学习的分词方式IKAnalyzer部署Solr并安装IKAnalyzerSolr分析功能修改managed-schema配置业务系统字段复制配置到容器重启容器SpringBoot整合Solr创建…...