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   ·   实用小工具   ·   5668 人在线   最高记录 6679   ·     Select Language
创意工作者们的社区
World is powered by solitude
VERSION: 3.9.8.5 · 11ms · UTC 06:37 · PVG 14:37 · LAX 23:37 · JFK 02:37
Developed with CodeLauncher
♥ Do have faith in what you're doing.