Skip to main content

lesscode-python

介绍

lesscode-python 是基于tornado的web开发脚手架项目,该项目初衷为简化开发过程,让研发人员更加关注业务。

软件功能

  1. 路由自动注册,路由直接指向处理函数
  2. 请求参数自动解析,调用处理函数自动注入
  3. 多环境配置文件,支持命令行指定运行参数
  4. 日志本地化存储,支持日志控制台与文件双输出,存储参数可配置
  5. 统一异常处理,日志格式统一
  6. 统一数据返回格式,自动包装处理
  7. 定义常用业务处理状态码,支持信息自定义
  8. 支持数据库连接池,支持多数据源统一配置,目前已支持PostgreSQL。

安装教程

安装或升级到最新版本,请执行以下操作:

pip install -U lesscode-py

使用说明

  1. 路由自动注册,路由直接指向处理函数

  2. 请求参数自动解析,调用处理函数自动注入

    1. 建立Handler处理类,继承BaseHandler

    2. 使用 @Handler 标注一级路径

    3. 编写业务处理方法,使用@GetMapping/PostMapping进行标注二级路径

    4. 请求时使用两级路径拼接访问如:/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"
  1. 多环境配置文件,支持命令行指定运行参数

    1. config.py 默认配置文件
    2. config_dev.py 开发环境配置文件
    3. config_release.py 准生产环境配置文件
    4. config_prod.py 生产环境配置文件

    注意:所有配置文件需要统一放置在项目根目录下的profile文件夹中,需要自行创建,不支持自定义

    相同参数默认配置文件会覆盖定义默认值,其他环境配置文件会覆盖默认配置文件,命令行会覆盖配置文件

    优先级:命令行>环境配置文件>默认配置文件>定义默认值

    定义:define("profile", default="profiles.config", type=str, help="配置文件")

    配置1:在默认配置文件中指定:options.profile ="dev" 仅需要指定后缀即可

    配置2:在命令行指定:--profile=dev

  2. 日志本地化存储,支持日志控制台与文件双输出,存储参数可配置

    日志级别设置

    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

  3. 统一异常处理,日志格式统一

    业务中需要抛出异常,直接抛出BusinessException

    抛出设定状态码异常
      raise BusinessException(StatusCode.USER_REGISTER_FAIL)
    抛出设定状态码异常,需要内容格式化,此类异常码为方法,调用时传入提示词
       raise BusinessException(StatusCode.REQUIRED_PARAM_IS_EMPTY(message))
    
  4. 统一数据返回格式,自动包装处理

    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"
        }
    
  5. 定义常用业务处理状态码,支持信息自定义

    StatusCode 统一请求返回状态码

    1. A表示错误来源于用户,比如参数错误,用户安装版本过低,用户支付超时等问题;
    2. B表示错误来源于当前系统,往往是业务逻辑出错,或程序健壮性差等问题;
    3. 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", "未知异常")
    

参与贡献

  1. Fork 本仓库
  2. 新建 Feat_xxx 分支
  3. 提交代码
  4. 新建 Pull Request

未来规划

  1. 数据访问层封装
  2. 数据缓存控制
  3. 统一权限处理
  4. API 接口文档生成
  5. 注册中心集成
  6. ......

Metadata

Release files for lesscode-py 0.4.27

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for lesscode-py 0.4.27
File Size Uploaded
lesscode_py-0.4.27.tar.gz 84.8 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for lesscode-py 0.4.27
File Interpreter ABI Platform
lesscode_py-0.4.27-py3-none-any.whl Python 3 none any Details

Total release size: 196.4 kB

Release files / lesscode_py-0.4.27.tar.gz

Download URL lesscode_py-0.4.27.tar.gz
Size 84.8 kB
Tags Source
SHA-256 checksum
How to use checksums
700ab79cdb0b3cff1cf3c135ba0d721dc7b6461eb0a4e9f744d8a3cbaffa6356
BLAKE2b-256 checksum
How to use checksums
740726528db57271ed0d795588b56df7ddb19a3fd571fdd78314d0d19aa74c44
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.1.0 CPython/3.8.20

Release files / lesscode_py-0.4.27-py3-none-any.whl

Download URL lesscode_py-0.4.27-py3-none-any.whl
Size 111.6 kB
Tags Python 3
SHA-256 checksum
How to use checksums
aab25d9c447e4b985f5bc2b34693158d8d8150f14be633bc6954ac257df09915
BLAKE2b-256 checksum
How to use checksums
a44875e3ddf1c9d48fdb377e84e69c77dc74ecced13da51407efab9ef6e0c85c
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.1.0 CPython/3.8.20

Release history Release notifications | RSS feed

This release

0.4.27 This release

2 release files

0.4.23

2 release files

0.4.22

1 release file

0.4.21

2 release files

0.4.20

2 release files

0.4.19

2 release files

0.4.18

2 release files

0.4.17

2 release files

0.4.16

2 release files

0.4.15

2 release files

0.4.12

2 release files

0.4.11

2 release files

0.4.10

2 release files

0.4.9

2 release files

0.4.8

2 release files

0.4.7

2 release files

0.4.6

2 release files

0.4.5

2 release files

0.4.4

2 release files

0.4.3

2 release files

0.4.2

2 release files

0.4.1

2 release files

0.4.0

2 release files

0.3.99

2 release files

0.3.98

2 release files

0.3.97

2 release files

0.3.96

2 release files

0.3.95

2 release files

0.3.94

2 release files

0.3.93

2 release files

0.3.92

2 release files

0.3.91

2 release files

0.3.90

1 release file

0.3.89

2 release files

0.3.88

2 release files

0.3.87

2 release files

0.3.86

2 release files

0.3.85

2 release files

0.3.84

2 release files

0.3.83

2 release files

0.3.82

2 release files

0.3.81

2 release files

0.3.78

2 release files

0.3.77

2 release files

0.3.76

2 release files

0.3.75

2 release files

0.3.74

2 release files

0.3.73

2 release files

0.3.72

2 release files

0.3.71

2 release files

0.3.70

2 release files

0.3.69

2 release files

0.3.68

2 release files

0.3.67

2 release files

0.3.60

2 release files

0.3.59

2 release files

0.3.56

2 release files

0.3.55

2 release files

0.3.54

2 release files

0.3.53

2 release files

0.3.52

2 release files

0.3.51

2 release files

0.3.50

2 release files

0.3.49

2 release files

0.3.48

2 release files

0.3.47

2 release files

0.3.46

2 release files

0.3.43

1 release file

0.3.42

2 release files

0.3.41

2 release files

0.3.40

2 release files

0.3.39

2 release files

0.3.38

2 release files

0.3.37

2 release files

0.3.36

2 release files

0.3.35

2 release files

0.3.34

2 release files

0.3.33

2 release files

0.3.32

2 release files

0.3.31

2 release files

0.3.30

2 release files

0.3.29

2 release files

0.3.20

2 release files

0.3.19

2 release files

0.3.18

2 release files

0.3.17

2 release files

0.3.16

2 release files

0.3.15

2 release files

0.3.14

2 release files

0.3.13

2 release files

0.3.9

2 release files

0.3.8

2 release files

0.3.7

2 release files

0.3.6

2 release files

0.3.5

2 release files

0.3.4

2 release files

0.3.3

2 release files

0.3.2

2 release files

0.3.1

2 release files

0.3.0

2 release files

0.2.98

2 release files

0.2.97

2 release files

0.2.96

2 release files

0.2.95

2 release files

0.2.94

2 release files

0.2.93

2 release files

0.2.92

2 release files

0.2.91

2 release files

0.2.90

2 release files

0.2.89

2 release files

0.2.88

2 release files

0.2.83

2 release files

0.2.82

2 release files

0.2.81

2 release files

0.2.75

2 release files

0.2.74

2 release files

0.2.73

2 release files

0.2.72

2 release files

0.2.71

2 release files

0.2.70

2 release files

0.2.69

2 release files

0.2.68

2 release files

0.2.67

2 release files

0.2.66

2 release files

0.2.65

2 release files

0.2.64

2 release files

0.2.63

2 release files

0.2.58

2 release files

0.2.57

2 release files

0.2.56

2 release files

0.2.55

2 release files

0.2.54

2 release files

0.2.53

2 release files

0.2.52

2 release files

0.2.51

2 release files

0.2.50

2 release files

0.2.49

2 release files

0.2.48

2 release files

0.2.46

2 release files

0.2.45

2 release files

0.2.44

2 release files

0.2.43

2 release files

0.2.42

2 release files

0.2.36

2 release files

0.2.35

2 release files

0.2.34

2 release files

0.2.33

2 release files

0.2.32

2 release files

0.2.31

2 release files

0.2.30

2 release files

0.2.29

2 release files

0.2.28

2 release files

0.2.27

2 release files

0.2.26

2 release files

0.2.25

2 release files

0.2.24

2 release files

0.2.23

2 release files

0.2.22

2 release files

0.2.21

2 release files

0.2.20

2 release files

0.2.19

2 release files

0.2.18

2 release files

0.2.17

2 release files

0.2.16

2 release files

0.2.15

2 release files

0.2.9

2 release files

0.2.8

2 release files

0.2.7

2 release files

0.2.6

2 release files

0.2.5

2 release files

0.2.4

2 release files

0.2.3

2 release files

0.2.2

2 release files

0.2.1

2 release files

0.1.99

2 release files

0.1.98

2 release files

0.1.80

2 release files

0.1.79

2 release files

0.1.78

2 release files

0.1.77

2 release files

0.1.76

2 release files

0.1.75

2 release files

0.1.74

2 release files

0.1.73

2 release files

0.1.72

2 release files

0.1.71

2 release files

0.1.70

2 release files

0.1.69

2 release files

0.1.68

2 release files

0.1.67

2 release files

0.1.66

2 release files

0.1.65

2 release files

0.1.64

2 release files

0.1.63

2 release files

0.1.62

2 release files

0.1.61

2 release files

0.1.60

2 release files

0.1.49

2 release files

0.1.48

2 release files

0.1.47

2 release files

0.1.46

2 release files

0.1.45

2 release files

0.1.44

2 release files

0.1.43

2 release files

0.1.42

2 release files

0.1.41

2 release files

0.1.40

2 release files

0.1.39

2 release files

0.1.38

2 release files

0.1.37

2 release files

0.1.36

2 release files

0.1.35

2 release files

0.1.34

2 release files

0.1.33

2 release files

0.1.32

2 release files

0.1.31

2 release files

0.1.30

2 release files

0.1.29

2 release files

0.1.28

2 release files

0.1.27

2 release files

0.1.26

2 release files

0.1.25

2 release files

0.1.24

2 release files

0.1.23

2 release files

0.1.22

2 release files

0.1.21

2 release files

0.1.20

2 release files

0.1.19

2 release files

0.1.18

2 release files

0.1.17

2 release files

0.1.16

2 release files

0.1.15

2 release files

0.1.14

2 release files

0.1.13

2 release files

0.1.12

2 release files

0.1.11

2 release files

0.1.10

2 release files

0.1.9

2 release files

0.1.8

2 release files

0.1.7

2 release files

0.1.6

2 release files

0.1.5

2 release files

0.1.4

2 release files

0.1.3

2 release files

0.1.2

2 release files

0.1.1

2 release files

0.1.0

1 release file

0.0.99

2 release files

0.0.98

2 release files

0.0.97

2 release files

0.0.96

2 release files

0.0.95

2 release files

0.0.94

2 release files

0.0.93

2 release files

0.0.92

2 release files

0.0.91

2 release files

0.0.90

2 release files

0.0.89

2 release files

0.0.87

2 release files

0.0.86

2 release files

0.0.85

2 release files

0.0.84

2 release files

0.0.82

2 release files

0.0.81

2 release files

0.0.80

2 release files

0.0.79

2 release files

0.0.78

2 release files

0.0.77

2 release files

0.0.76

2 release files

0.0.75

2 release files

0.0.74

2 release files

0.0.73

2 release files

0.0.72

2 release files

0.0.71

2 release files

0.0.70

2 release files

0.0.69

2 release files

0.0.68

2 release files

0.0.67

2 release files

0.0.66

2 release files

0.0.65

2 release files

0.0.64

2 release files

0.0.63

2 release files

0.0.62

2 release files

0.0.61

2 release files

0.0.60

2 release files

0.0.59

2 release files

0.0.58

2 release files

0.0.36

2 release files

0.0.35

2 release files

0.0.34

2 release files

0.0.33

2 release files

0.0.32

2 release files

0.0.31

2 release files

0.0.30

2 release files

0.0.29

2 release files

0.0.28

2 release files

0.0.27

2 release files

0.0.26

2 release files

0.0.25

2 release files

0.0.24

2 release files

0.0.23

2 release files

0.0.20

2 release files

0.0.19

2 release files

0.0.18

2 release files

0.0.17

2 release files

0.0.16

2 release files

0.0.15

2 release files

0.0.14

2 release files

0.0.13

2 release files

0.0.12

2 release files

0.0.11

2 release files

0.0.10

2 release files

0.0.9

2 release files

0.0.8

2 release files

0.0.7

2 release files

0.0.6

2 release files

0.0.5

2 release files

0.0.3

2 release files

0.0.2

2 release files

0.0.1

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page