# lightweight-loan-risk-engine **Repository Path**: chinakeyboardman/lightweight-loan-risk-engine ## Basic Information - **Project Name**: lightweight-loan-risk-engine - **Description**: 轻量级的信贷风控引擎 - **Primary Language**: Unknown - **License**: MIT - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 1 - **Forks**: 0 - **Created**: 2023-11-10 - **Last Updated**: 2025-10-21 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # lightweight-loan-risk-engine #### 介绍 * 轻量级贷款风控引擎 * 脚手架: 此项目可帮助Sanic开发者快速搭建自己的项目,而免去前期各种配置的烦恼,同时还附赠可能会帮到你的通用方法(雪花算法、唯一码)。 #### 政策&隐私 * 项目为MIT开源协议, 严禁未通知框架内所有工具开发者的情况下商业化, 因为框架内调用了大量开源代码, 使用代码请自行维护并内部学习使用, 开源项目中代码中请勿夹杂任何账号密码, 如有泄漏本项目作者概不负责 * 除模型主要流程和框架运行web必要服务相关功能以外只供学习使用 (例如crawler模块只能用于学习) #### 软件架构 * 语言:python 3.7+ * 框架:Sanic * 数据库:MySQL 5.6 * 缓存:Redis #### 安装教程 1. 已经容器化, 对python环境不熟悉可以直接使用Dockerfile和docker-compose进行部署。 2. 参考配置信息和运行时报错, 补全redis和mysql等必备的配置。 3. 运行项目 4. ps. 所有环境依赖都在dockerfile有记录, python用到的包等全部都写在requirements.txt中。 #### 打包cpp机器码执行 1. 安装gcc环境(dockerfile里面都有), 原理是cython, 打包后在package目录内生成完整可执行程序 2. python setup_main.py 执行即可 3. 早期代码可以直接直接打包, 已经建立tag标签(2024-08-06), 但是随着后续开发人员填入代码并没有按照cython准则, 以及框架特殊的命名空间, 出问题代码可能需要去掉后打包, 或者有能力的人可以去修复 4. package打包成功后内部会有main.py文件, 实际上只有一部分性能慢代码需要被优化, 大部分和py原本功能一致 #### 使用说明 1. 请确保Python版本在3.7及以上,因为从3.7开始新增关键词`async`,支持我们进行异步操作。 2. 如果调用的库都是同步代码,可使用`utils.common.sync2async`封装下,实现异步调用。 3. 配置完数据库后,请查看`aerich`文档生成数据库表,或者将`tortoise`配置中的`generate_schemas`改为True自动生成表。 4. 如果使用`Dockerfile`和`docker-compose`的话请修改其内部的配置。 #### 使用redis: ``` # 引入 from utils.redis_utils import get_redis # 代码中使用 redis = await get_redis() val = await redis.get('test') print(val) await redis.incrby("test", 1) val = await redis.get('test') print(val) ``` #### 使用说明 - 配置 1. 配置文件在conf/xxx.py 2. 需要从例如dev.py或者prod.py复制一个secret.py文件,然后修改里面的配置 3. 需要从根目录.env.prod复制出一个.env文件,然后修改里面的配置, 账号密码相关的内容添加在这里不能写代码里 4. 常用配置包含mysql,redis,sanic framework 5. 工具类配置包含: sentry日志平台(需要注册账号然后在平台上面看到项目代码trace) 6. 类似于mysql是一定要配置一个连接并确保能通畅的, 因为框架默认要连一个, 作者尝试过取消这个配置但是太复杂就算了 #### 使用说明 - 快速开始 建立一个web服务模块&接口 1. 在app目录新建文件夹,文件夹名称即为模块名称,比如`demo`,然后新建`__init__.py`文件. 2. 在根目录下conf/base.py文件添加'app.demo', views.py写控制器, 然后添加urls.py绑定路由(模块内部的代码和url地址, 绑定post/get方法到views.py), 增加模块的路由地址. 3. 如果需要接口数据校验等高安全要求, 使用serializers.py文件进行数据校验. 4. 需要用数据库使用mdoels.py文件. 5. 所有代码可以参考app/demo模块, 照抄. #### 参与贡献 1. Fork 本仓库 2. 新建 Feat_xxx 分支 3. 提交代码 4. 新建 Pull Request #### 特技 1. [Sanic 框架](https://sanic.dev/zh/) 2. [tortoise-orm](https://tortoise-orm.readthedocs.io/en/latest/) 3. [aerich](https://github.com/tortoise/aerich) 4. [aioredis](https://aioredis.readthedocs.io/en/latest/migration/) 5. [Docker](http://www.imooc.com/wiki/dockerlesson) 6. [Docker Compose](https://docs.docker.com/compose/) 7. [Python](https://www.python.org/) 8. 其余引用可参考requirements.txt, 引用了诸位开发者的项目 9. 感谢所有的开源贡献者