使用腾讯云的 Serverless Framework. See Also:
- wxsls-page 零碎网页
- wxsls-base 基本组件
学生机必然要每年迁移,每年迁移比较麻烦。
直接不靠优惠购买太贵了。网络、性能的弹性也很难满足需求。
它的数据库没有 Python SDK 啊
更多开发约定见 CONTRIBUTING.md。
项目支持 Python >=3.9,<3.12,CI 使用 Python 3.11,当前本地开发和部署环境使用
Python 3.9。Poetry 统一使用 2.1.4。
当前开发环境采用以下项目内布局,两个目录均已加入 .gitignore:
.venv/:Python 3.9 和项目依赖;.poetry/:独立安装的 Poetry 2.1.4,避免 Poetry 自身依赖污染 项目环境。
环境创建完成后,安装依赖并配置提交检查:
source .venv/bin/activate
python --version # Python 3.9.x
poetry --version # Poetry 2.1.4
poetry install
poetry run pre-commit install依赖以 poetry.lock 为准,包源使用官方 PyPI。不要使用系统 pip 安装项目依赖。
本地开发使用仓库中的 Compose 配置,数据库数据保存在独立 volume 中:
docker compose up -d mysql
docker compose ps mysql默认仅监听本机 127.0.0.1:3306,开发数据库、用户和密码分别为
wechat、user 和 password,默认字符集为 utf8mb4。
当前已配置过的 Podman 开发机可以直接管理现有容器:
podman start wxsls-mysql
podman ps --filter name=wxsls-mysql
podman logs -f wxsls-mysql
podman stop wxsls-mysqldocker compose down 只停止并删除容器,不会删除数据库 volume;只有明确需要清空
本地数据库时才使用 docker compose down -v。
本项目使用 Dynaconf。本地配置文件的实际
路径为 src/pkuphysu_wechat/config/.secrets.toml,该文件包含敏感信息,不应提交到
版本库。
可以从以下模板开始:
[default]
TASK_AUTH_TOKEN = "liyanjieqing"
[default.flask]
dynaconf_merge = true
SQLALCHEMY_DATABASE_URI = "mysql+pymysql://user:password@127.0.0.1:3306/wechat?charset=utf8mb4"
[default.wechat]
APP_ID = ""
APP_SECRET = ""
TOKEN = "token"
MASTER_IDS = ["<your open id>"]运行测试:
poetry run pytest启动 Flask 开发服务器时需要从 src/ 目录读取 .flaskenv:
cd src
poetry run flask run首次启动后,通过任务接口创建数据库表:
curl "http://127.0.0.1:5000/tasks/db/create?token=<TASK_AUTH_TOKEN>"如需连接微信测试号,可以另开终端启动 Tunnel Service:
ngrok http 5000本地运行时可使用 developmentoken 作为 token,绕过微信授权。
发布逻辑已写入 GitHub Actions。dev 分支会发布到 dev 环境,master 分支会发布到
prod 环境;部署连接同样使用 mysql+pymysql。
大多数触发已在前端配置;如需人工触发,可在腾讯云触发管理中查看对应 URL。
- 定时任务的实现(类似 web-cron)
- 抽奖部分的整改
- 对活动代码的集成(等有活动了再说)
- 一键部署的方案
- (管理向)腾讯云集体账号管理