个人总结
command.py
file.py
time.py
excel.py
with 的原理和用法
subprocess 模块
cline 提示词
PathLike
pathlib
peewee
生成随机ID
FastApi 使用 peewee
http connect
Dataframe Protocol
pyarrow
overload 函数重载
1111
peewee 线程安全
Python 日志模块
rabbitmq 问答
多进程 daemon 参数
记录异常
dict.py
多进程
忽略异常
timer.py
Ctrl+C 退出while
发布pip包
Bolo组件
迭代器与生成器
dataclass
单例模式(二)
单例模式(一)
errors.py
enum.py
每日学习
本文档使用 MrDoc 发布
-
+
首页
peewee
### 问题 在多进程的情况下,`peewee`经常会报错:`Lost connection to MySQL server during query` ### 解决方案 经调试发现,子进程继承了父进程的数据库连接对象,状态为打开状态,但如果你在子进程中使用这个连接对象去查询,就会报这个错误。在子进程中是不可以直接使用这个对象的,这个连接对象属于父进程,子进程需要开启自己的连接对象来使用。 所以我们需要在子进程的入口处将连接对象的状态设置为`close`,这样在调用`db.connection_context()`的时候就会创建新的连接对象。 为了方便,我们定义了以下方法用来创建子进程,统一关闭所有子进程的数据库连接对象: ``` import multiprocessing def close_connection(f): def wrapper(*args, **kwargs): DB.close() return f(*args, **kwargs) return wrapper # 创建子进程,使用上面的装饰器来关闭数据库连接对象 def new_process(target, args=(), kwargs=None, daemon=False, name=None): kwargs = kwargs or {} p = multiprocessing.Process(target=close_connection(target), args=args, kwargs=kwargs, name=name) p.daemon = daemon p.start() return p ```
gaojian
2023年7月20日 15:09
分享文档
收藏文档
上一篇
下一篇
微信扫一扫
复制链接
手机扫一扫进行分享
复制链接
关于 MrDoc
觅思文档MrDoc
是
州的先生
开发并开源的在线文档系统,其适合作为个人和小型团队的云笔记、文档和知识库管理工具。
如果觅思文档给你或你的团队带来了帮助,欢迎对作者进行一些打赏捐助,这将有力支持作者持续投入精力更新和维护觅思文档,感谢你的捐助!
>>>捐助鸣谢列表
微信
支付宝
QQ
PayPal
Markdown文件
分享
链接
类型
密码
更新密码