Dev
¶
构建/发布/包管理¶
…|python |javascript |—|—|— 构建系统|poetry/hatch/pdm|webpack/vite/rollup 包管理/虚拟环境管理|pip(venv/virtualenv/Virtualenvwrapper)/pipenv(pipenv shell)/conda|npm/pnpm/yarn 配置文件|pyproject.toml|package.json
pipenv常用指令
pipenv --python 3.7
pipenv shell # 激活虚拟环境
##requirements 包管理
pip3 freeze > requirements.txt
pip3 install -r requirements.txt
##pipenv 包管理
pipenv install / pipenv install -d --skip-lock
pipenv lock -r --dev > requirements.txt
pipenv install -r requirements.txt
pipenv graph # 查看目前安装的库及其依赖
pipenv update --outdated # 查看所有需要更新的依赖项
pipenv update # 更新所有包的依赖项
pipenv update <包名> # 更新指定的包的依赖项
exit # 退出当前虚拟环境
poetry常用指令
poetry shell 进入虚拟环境
poetry add 添加依赖包
poetry install 安装所有依赖
poetry run xxx 运行
poetry build 打包
poetry publish 发布python包
项目部署
¶
- 自建部署:服务部署(gunicorn、docker镜像、二进制安装包) + 反向代理服务(nginx、ngrok、cpolar、natapp)
- 平台部署:serverless云函数、Railway
项目部署主要有两种,一种是自建,相对费时费力,但是数据安全可靠,从服务到反向代理都要自己部署,另外一种是一站式部署,第三方平台提供部署服务。
1. 自建部署¶
gunicorn部署¶
gunicorn -c gunicorn.conf.py main:app启动服务
docker镜像部署¶
docker build -t spacecraftserver4flask:latest .
docker run -d --name viserver -p 9000:9000 \
--env APP_ID=xxx \
--env APP_SECRET=xxx \
--env APP_ENCRYPT_KEY=xxx \
--env APP_VERIFICATION_TOKEN=xxx \
--env BOT_NAME=chatGpt \
--env OPENAI_KEY="sk-xxx1,sk-xxx2,sk-xxx3" \
--env API_URL="https://api.openai.com" \
--env HTTP_PROXY="" \
spacecraftserver4flask:latest
docker-compose部署¶
# 构建镜像
docker compose build
# 启动服务
docker compose up -d
# 停止服务
docker compose down
二进制安装包部署¶
- 进入release 页面 下载对应的安装包
- 解压安装包,修改 instance/settings.yaml 或者 prod_config.py 中配置信息
- 运行程序
python spacecraftserver4flask
nginx部署¶
安装Nginx并且在 /etc/nginx/sites-available/default文件中server –location位置添加如下转发
proxy_pass http://127.0.0.1:8000;
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
2. 平台部署¶
国内serverless云函数(阿里云等)部署¶
使用 Railway 平台一键部署¶
点击下方按钮即可创建一个对应的 Railway 项目,其会自动 Fork 本项目到你的 Github 账号下。
填写完环境变量后,点击 Deploy 就完成了项目的部署
如果不确定自己部署是否成功,可以通过访问上述获取到的域名 (https://xxxxxxxx.railway.app/ping) 来查看是否返回了pong
,如果返回了pong
,说明部署成功。
flask配置文件¶
- flask run 时只会读取.flaskenv/.env的配置,即使配置了config_file/config_object,也会不生效
- python xx.py时config_file/config_object配置文件将会生效
所以flask run常用雨调试阶段,而python xx.py用于部署阶段
instance folder copy to /¶
instance为整个web服务的外部配置,应该被copy到操作系统的根目录
tsdb vs. sqldb¶
InfluxDB | MySQL | 解释 |
---|---|---|
Buckets | Database | 数据桶-数据库,即存储数据的命名空间。 |
Measurement | Table | 度量-表。 |
Point | Record | 数据点-记录。 |
Field | Field | 未设置索引的字段。 |
Tag | Index | 设置了索引的字段。 |