python - 如何在 prefork celery 环境中正确使用 psycopg2?
问题描述
问题
我有一个芹菜工人(prefork 模式,4 个进程)。在 celery 的异步任务中,我使用psycopg2
操作数据库(postgresql)。每次重启 celery 都可以完成一个任务,但是当第二个任务来操作数据库时,出现错误:InterfaceError: cursor already closed
我在文档中找到了一些东西,它说:
分叉进程不应使用连接,因此当使用诸如多处理之类的模块或诸如 FastCGI 之类的分叉 Web 部署方法时,请确保在分叉之后创建连接。
这是我错误的原因吗?如果为真,psycopg2
在 celery prefork 模式下使用 lib 的正确方法是什么?
(也许在任务开始时建立数据库连接并在结束时关闭它太昂贵了?)
解决方案
推荐阅读
- python - 如何判断 3D 图上的点是在平面上还是在曲线上?
- java - 如果字符串包含字符,则添加分隔符?
- reactjs - 如何在 useState 中使用数组?
- r - 从复杂的日期格式中识别星期
- c# - 有没有办法判断列表中随机元素的类型是否是 MethodInfo?
- javascript - 如何不允许使用 javascript 提交所有空格
- python - 根据 Python Schedule 中先前作业的值运行作业
- c - C中的按位加法溢出检查
- c# - 具有不同命名空间的 NUnit 全局设置
- jenkins - 如何从正在合并到 Jenkiins 中 master 的 PR 中获取工件