V2EX akaHenry
akaHenry

akaHenry

V2EX 第 511376 号会员,加入于 2020-10-07 15:47:45 +08:00
根据 akaHenry 的设置,主题列表被隐藏
二手交易 相关的信息,包括已关闭的交易,不会被隐藏
akaHenry 最近回复了
这个 mysql 报错, 是 django 老问题了. 7~8 年前, 就这样.

django.db.close_old_connections() 就是当时的解决办法. 楼上 参考 huey 的装饰器做法, 也很常见.

(印象中的老项目, 当时也是写了个装饰器, 到处挂, 很恶心)

我最近的新项目, 直接切 PG 了. PG 直接支持 连接池参数, 就没再遇到类似问题.

https://docs.djangoproject.com/en/5.2/ref/databases/#connection-pool

如果是新项目, 建议直接切 pg 吧, mysql 现在比 pg 全方位落后, 没有继续使用的必要.

如果是老项目, 你可以搜索试试几个 django db connection pool 的库, 有支持 mysql 的.


https://github.com/altairbow/django-db-connection-pool


我没验证过. 不保证有效. mysql 的很多问题, 在 pg 这里, 都不存在.

我线上的新项目, pg 跑了大半年了, 很稳定, 日志很健康. 也没遇到啥运维的坑.
100 多个脚本, 梳理一下, 做一些技术改造.

1. 偶尔执行的. 改成 django admin 后台配置页面触发. 任务流, 改成 消息队列(生产者-消费者模型).

基于 队列(kafka, rabbitmq, nats 都可以) 解耦: 动作触发(生产者) 和 动作执行(消费者).

推荐 nats, 运维简单.

工作流改造成:

a. admin 侧, 触发动作, send task(参数包) 到消息队列, admin 结束.

b. 消息队列的 监听者 worker, 收到 task, 解析参数, 执行具体任务, 结束.

2. 定时任务, 可以试试 huey 和 django-huey, 支持 redis 监听不同的 queue 来分别监听 + 执行.

比 celery 简单. 注意如果启用了 django 时区, huey 配置也要启用时区, 否则是 UTC 时间.(小坑) 其他使用挺完美.

https://github.com/coleifer/huey

https://github.com/gaiacoop/django-huey

经过上述改造. 如果不考虑高可用, 单副本下, 你大概只需要部署 2-3 个容器实例, 就够了.

需要注意, 如果是 k8s 多副本实例, 需要 MQ 消息 幂等唯一消费, 可以引入一个分布式锁判定, 可以简单用 redis 锁.

上面的方案, 算是比较标准的做法.

不要滥用 django scripts 的一些方便用法. (后期维护一堆烂脚本, 显然是不明智的)
没点进来, 以为说的是 Mojo, 点进来, 是 MoonBit ???

MoonBit 也能来碰瓷 Python? 没活硬增?

MoonBit 在 贵乎 上的营销帖子, 铺天盖地, 到处碰瓷 Rust, Zig.

(讲真, 不打算和 Rust/Zig 坐一桌了, 还是觉得上不了桌? 笑...)

真下头.

东西真好, 自然有人用.

东西不好, 再自我吹捧, 也没人搭理.

劝作者, 好好把静力用在打磨自己的产品.
@Richared #50 Java 项目? 那你还是 idea 吧. 应该没几个正经人用 vscode 写 java. 笑.

(我前面发的讨论, 就不包含 java)

你 idea 跳转都 2 秒了, 这不闹麽. 换啥都不好使.

写 java 的, 无需参与 vscode 讨论.
@Linioi #39 用 vscode 就好. vscode 插件市场, 搜索 python, 把 微软官方的插件, 都装全. 开发体验, 不比 pycharm 差.

(代码补全, 跳转, 流畅程度, GPT 友好, 体验都是完备的)

2025 了, python 开发, 可以完全弃用 pycharm 了.

(作为精通 pycharm 各种技巧, 10 多年骨灰用户的真实评价)

pycharm 卡, 慢, 对 monorepo 中, 多 venv 切换支持烂. (远远不如 vscode) GPT 插件支持, 远远落后.

JB 几个语言的 IDE, 都已经开始免费了, 你就知道, 用户流失率有多高.
@tangc1986 #41 这个不错, 抽空试试. 感谢.
@Richared #47

老黄历了. 2025 了, 更新一下认知.

vscode 插件配置完备, 代码跳转 和 搜索能力, 并不比 jb 弱, 部分语言的 LSP 甚至更优.

JB 打开 monorepo 大项目, 一创建工程索引, 就炸机飙 CPU. (机器体验, M1 MAX + 32G, 也别提醒我改 vm 设置)

=============================================

vscode 比 jb 弱的是 大项目内 代码重构(函数重命名)能力, vscode 会有遗漏.

(也不是大问题, 静态语言, 编译报错, 就能发现. 动态语言, 大项目, 就别用这个操作)

JB 唯 2 还占优的功能: git 合并冲突 和 代码重构 & 重命名.

别的? 真没剩下啥了.
@jiyan5 #43

确实是 pylance(Pyright) 插件的作用.

vscode 禁用 pylance + 重启, 确实不能识别 相对路径导入的模块.

另外, 顺着你的提示, 发现 pylance 是基于 Pyright 的.

trae 可以安装 Pyright 插件, 安装了 Pyright, 就支持识别 相对路径的导入模块的识别了.

@wryyyyyyyyyyyy #31

补充一下, 完整的 docker 构建 + 发布到 github (ghcr.io) 的脚本在这里:

https://github.com/better-sre/config/blob/main/dockerfile/_debian/Taskfile.yml#L34

这个是 debian 的发布脚本, ubuntu 的, 在对应目录下, 也都有.

每个目录的 readme.md 下, 有 Taskfile.yml 构建脚本的使用说明. 应该能看得懂.

注意需要配置 github token, 然后设置到 env 环境变量里.

具体我这个 repo 根目录, 有 .env.local 的参数格式. 可以看一下.

应该就这些了.
@wryyyyyyyyyyyy #31


你是指 docker 构建+部署吗? 具体参考如下内容.

这是我的基镜像 dockerfile, 包括 ubuntu22 和 debian12 的配置:

https://github.com/better-sre/config/tree/main/dockerfile

根据这个配置, 可以本地编译+发布, 也可以利用 github action, 我懒得写配置. 直接本地发布的.

这是我打包+发布到 github 的 docker 基镜像路径:

https://github.com/orgs/better-sre/packages


南京大学对 github docker 源 ghcr.io 的镜像:

https://sci.nju.edu.cn/9e/05/c30384a564741/page.htm

基于 南大的 mirror, 就可以在国内云主机, 快速拉到基镜像, 再在云主机上 docker build 就快了.
关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     895 人在线   最高记录 6679       Select Language
创意工作者们的社区
World is powered by solitude
VERSION: 3.9.8.5 12ms UTC 20:51 PVG 04:51 LAX 12:51 JFK 15:51
Do have faith in what you're doing.
ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86