Python 框架 Sanic 应用上下文的使用
前记
初次接触 Sanic
框架,在使用的过程中,并没有在文档中发现如何使用应用上下文
使用
通过 issues
咨询后记录如下
1 | from sanic import Sanic |
题外话:
申明全局的 Json 序列化函数
1 | from orjson import dumps |
初次接触 Sanic
框架,在使用的过程中,并没有在文档中发现如何使用应用上下文
通过 issues
咨询后记录如下
1 | from sanic import Sanic |
题外话:
申明全局的 Json 序列化函数
1 | from orjson import dumps |
鉴于 brew uninstall
只会卸载软件包本身而不会卸载其依赖包,所以我们用 homebrew-rmtree
来解决完全卸载
brew tap beeftornado/rmtree
1 | brew rmtree pyenv-virtualenv |
1 | brew rmtree pyenv-virtualenv |
pyenv
是 Python
版本管理工具。pyenv
可以改变全局的 Python
版本,在系统中安装多个版本 Python
,设置目录级别的 Python
版本,还能创建和管理 virtual python environments
利用 pyenv-installer
安装
1 | curl https://pyenv.run | bash |
安装后会自动安装如下插件pyenv-doctor pyenv-installer pyenv-update pyenv-virtualenv pyenv-which-ext python-build
在 ~/.zshrc
中添加如下配置
1 | export PYENV_ROOT="$HOME/.pyenv" |
1 | # 查看可以安装的包和版本 |
比如我们现在有一个场景,为 sanic
项目创建一个虚拟环境
第一步:
我们需要安装需要的 Python
版本比如 3.9.5
pyenv install 3.9.5
第二步:
创建一个 3.9.5 版本的虚拟环境pyenv virtualenv 3.9.5 sanic
第三步:
去到 sanic
项目目录pyenv local sanic
第四步
取消设定pyenv local --unset
第五步
导出 requirements.txt
pip freeze > requirements.txt
到这里就可以在 sanic
项目下愉快的玩耍了
当我们需要统计累积量的时候就需要计算同一业务
以及相邻
两行的差值
接下来我们模拟一个业务,就是统计每天数据表的行数增加量。首先我们需要每天将当天表的数据行数写入到数据库
表结构如下:
1 | CREATE TABLE `table_logs` ( |
方法:t1.rownum = t2.rownum - 1
代码:
1 | SELECT * FROM |
最后只需要将 t1.row_num-t2.row_num
就可以实现我们的需求
在 Python
中使用 json.dumps
时出现 xxx is not JSON serializable
1 | TypeError: Object of type Decimal is not JSON serializable |
1 | TypeError: Object of type datetime is not JSON serializable |
1 | import datetime |
JSONEncoder
中的类型可以扩展,加上自己需要的类型即可
在 Vue
中需要对 Table
数据进行多选,且翻页时需要对前一页选中进行保留
1 | <el-table |
1 | // 当选择时调用 |
重点是:row-key
不能重复,也就是 getRowKeys
中的 ID
不能重复
业务需求,在 Vue
表格中需要是实现一件展开与一键折叠
1 | <el-form> |
1 | export default { |
在 Vue
中通过 Key
值的改变进行新的渲染,如:key="变量名"
通过修改变量的值可以重新渲染组件
bitwarden_rs
一直是安装在群晖上的 Docker
中的,对外访问也是通过群晖应用门户程序->反向代理
反向代理加路由器端口转发
但是有一个问题,就是群晖 UI
界面的反代没有办法编辑配置,也就没有办法利用 bitwarden_rs
的 WebSocket
自动推送更新
想到的解决方案有两个,第一是通过 Docker
再装一个 Nginx
来做反代,第二是通过群晖自身的 Nginx
来做反代;最后选择了通过自身 Nginx
来做反代
/usr/syno/etc/certificate/system/default/
为群晖安全性->证书
上传的默认证书的存储位置
8888、3012
端口为 bitwarden_rs
的 80、3012
映射到群晖对应的端口
1 | server { |
将配置文件链接到 /etc/nginx/sites-enabled/
ln -s /volume1/docker/nginx/xxx.com.conf /etc/nginx/sites-enabled/
最后只需要重启 Nginx
即可sudo synoservicecfg --restart nginx
题外话:
利用第三方 FFMPEG 解码器让群晖的 Video Station 完美支持 DTS、EAC3、TrueHD