lesscode-python 是基于tornado的web开发脚手架项目,该项目初衷为简化开发过程,让研发人员更加关注业务。
Project description
lesscode-python
介绍
lesscode-python 是基于tornado的web开发脚手架项目,该项目初衷为简化开发过程,让研发人员更加关注业务。
软件功能
- 路由自动注册,路由直接指向处理函数
- 请求参数自动解析,调用处理函数自动注入
- 多环境配置文件,支持命令行指定运行参数
- 日志本地化存储,支持日志控制台与文件双输出,存储参数可配置
- 统一异常处理,日志格式统一
- 统一数据返回格式,自动包装处理
- 定义常用业务处理状态码,支持信息自定义
- 支持数据库连接池,支持多数据源统一配置,目前已支持PostgreSQL。
安装教程
安装或升级到最新版本,请执行以下操作:
pip install -U lesscode-py
使用说明
-
路由自动注册,路由直接指向处理函数
-
请求参数自动解析,调用处理函数自动注入
-
建立Handler处理类,继承BaseHandler
-
使用 @Handler 标注一级路径
-
编写业务处理方法,使用@GetMapping/PostMapping进行标注二级路径
-
请求时使用两级路径拼接访问如:/level1/level2
@Handler("/level1") class DemoHandler(BaseHandler):
@GetMapping("/level2") def query_demo(self): return "lesscode-python"
-
注意:所有Handler处理类需要放在统一文件目录下,默认为"handlers", 如需修改在配置文件中进行设置
定义:define("handler_path", default="handlers", type=str, help="处理器文件存储路径")
配置:options.handler_path ="xxx"
-
多环境配置文件,支持命令行指定运行参数
- config.py 默认配置文件
- config_dev.py 开发环境配置文件
- config_release.py 准生产环境配置文件
- config_prod.py 生产环境配置文件
注意:所有配置文件需要统一放置在项目根目录下的profile文件夹中,需要自行创建,不支持自定义
相同参数默认配置文件会覆盖定义默认值,其他环境配置文件会覆盖默认配置文件,命令行会覆盖配置文件
优先级:命令行>环境配置文件>默认配置文件>定义默认值
定义:define("profile", default="profiles.config", type=str, help="配置文件")
配置1:在默认配置文件中指定:options.profile ="dev" 仅需要指定后缀即可
配置2:在命令行指定:--profile=dev
-
日志本地化存储,支持日志控制台与文件双输出,存储参数可配置
日志级别设置
CRITICAL > ERROR > WARNING > INFO > DEBUG > NOTSET
10-DEBUG 输出详细的运行情况,主要用于调试。
20-INFO 确认一切按预期运行,一般用于输出重要运行情况。
30-WARNING 系统运行时出现未知的事情(如:警告内存空间不足),但是软件还可以继续运行,可能以后运行时会出现问题。
40-ERROR 系统运行时发生了错误,但是还可以继续运行。
50-CRITICAL 一个严重的错误,表明程序本身可能无法继续运行。
配置:options.logging = "INFO"
文件分割方式
时间与文件大小,默认采用时间分割time/size
配置:options.log_rotate_mode = "time"
日志文件前缀
配置:options.log_file_prefix = "log"
间隔的时间单位
S 秒 M 分 H 小时、 D 天、 W 每星期(interval==0时代表星期一) midnight 每天凌晨
配置:options.log_rotate_when = "D"
备份文件的个数
如果超过这个个数,就会自动删除
配置:options.log_file_num_backups = 30
-
统一异常处理,日志格式统一
业务中需要抛出异常,直接抛出BusinessException
抛出设定状态码异常 raise BusinessException(StatusCode.USER_REGISTER_FAIL) 抛出设定状态码异常,需要内容格式化,此类异常码为方法,调用时传入提示词 raise BusinessException(StatusCode.REQUIRED_PARAM_IS_EMPTY(message))
-
统一数据返回格式,自动包装处理
ResponseResult 响应结果的统一包装类
业务请求状态编码
self["status"] = status_code[0] # 返回状态码对应的说明信息 self["message"] = status_code[1] # 返回数据对象 主对象 指定类型 self["data"] = data # 时间戳 self["timestamp"] = datetime.now().strftime('%Y-%m-%d %H:%M:%S.%f') #### 响应格式 { "status": "00000", "message": "请求成功", "data": "lesscode-python", "timestamp": "2021-11-18 16:20:07.823522" }
-
定义常用业务处理状态码,支持信息自定义
StatusCode 统一请求返回状态码
- A表示错误来源于用户,比如参数错误,用户安装版本过低,用户支付超时等问题;
- B表示错误来源于当前系统,往往是业务逻辑出错,或程序健壮性差等问题;
- C表示错误来源于第三方服务
响应服务请求的状态码与说明
SUCCESS = ("00000", "请求成功") FAIL = ("99999", "请求失败") USER_VALIDATE_FAIL = ("A0001", "用户端错误") USER_REGISTER_FAIL = ("A0100", "用户注册错误") USER_NAME_VALIDATE_FAIL = ("A0110", "用户名校验失败") USER_NAME_EXIST = ("A0111", "用户名已存在") USER_NAME_INVALID = ("A0112", "用户名包含特殊字符") PASSWORD_VALIDATE_FAIL = ("A0120", "密码校验失败") PASSWORD_LENGTH_VALID = ("A0121", "密码长度不够") SHORT_MESSAGE_VALID_FAIL = ("A0130", "短信验证码错误") VALIDATE_CODE_ERROR = ("A0131", "验证码错误!") USER_LOGIN_EXCEPTION = ("A0200", "用户登陆异常") USER_ACCOUNT_NOT_EXIST = ("A0201", "用户账户不存在") REQUEST_PARAM_ERROR = ("A0300", "用户请求参数错误") INVALID_USER_INPUT = ("A0301", "无效的用户输入") REQUIRED_PARAM_IS_EMPTY = ("A0310", "请求缺少必要参数:{}") INVALID_TIME_STAMP = ("A0311", "非法的时间戳参数") USER_INPUT_INVALID = ("A0312", "用户输入内容非法") VALIDATE_CODE_EXPIRE = ("A0400", "验证码过期") FORM_VALIDATE_FAIL = ("A0401", "表单校验失败") PARAM_VALIDATE_FAIL = ("A0402", "参数校验失败") PARAM_BIND_FAIL = ("A0403", "参数绑定失败") PHONE_NUM_NOT_FOUND = ("A0404", "找不到该用户,手机号码有误") PHONE_ALREADY_REGISTER = ("A0405", "手机号已经注册") ACCESS_DENIED = ("B0001", "访问权限不足") RESOURCE_DISABLED = ("B0002", "资源被禁用") RESOURCE_NO_AUTHORITY = ("B0003", "该资源未定义访问权限") BUSINESS_FAIL = ("B0000", "{}") RESOURCE_NOT_FOUND = ("B0404", "访问资源不存在") TIMEOUT = ("B0100", "系统执行超时") STRIKE_RECOVERY = ("B0200", "系统容灾系统被触发") RPC_INVOKE_ERROR = ("C0001", "调用第三方服务出错") SERVER_ERROR = ("C0002", "服务器内部错误") UNKNOWN_ERROR = ("C0003", "未知异常")
参与贡献
- Fork 本仓库
- 新建 Feat_xxx 分支
- 提交代码
- 新建 Pull Request
未来规划
- 数据访问层封装
- 数据缓存控制
- 统一权限处理
- API 接口文档生成
- 注册中心集成
- ......
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Hashes for lesscode_py-0.2.50-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 53ab7aa0f0bf7a1e6b29b5edb612ba7a2d040de9ee44e3fa658d7fce7b872970 |
|
MD5 | 854b11d7048a031267c51fcdb987c24f |
|
BLAKE2b-256 | a32dc49e409452b456cc311277f6a0c2aeed6c5189be3cdd4873b2d789bba0d4 |