【发布时间】:2013-01-09 16:17:58
【问题描述】:
我正在使用 Celery 独立(不在 Django 中)。我计划在多台物理机器上运行一种工作任务类型。该任务执行以下操作
- 接受 XML 文档。
- 转换它。
- 进行多次数据库读取和写入。
我使用的是 PostgreSQL,但这同样适用于使用连接的其他存储类型。过去,我使用数据库连接池来避免在每个请求上创建新的数据库连接或避免连接打开时间过长。但是,由于每个 Celery 工作人员都在一个单独的进程中运行,我不确定他们实际上如何能够共享池。我错过了什么吗?我知道 Celery 允许您保留从 Celery 工作人员返回的结果,但这不是我在这里想要做的。根据处理的数据,每个任务可以执行多个不同的更新或插入。
从 Celery worker 中访问数据库的正确方法是什么?
是否可以在多个工作人员/任务之间共享一个池,或者是否有其他方法可以做到这一点?
【问题讨论】:
-
你解决了吗?我会对解决方案感兴趣。
-
我为每个工作人员设置了一个数据库连接。
-
@oneself 如果你接受答案就好了
-
嗨,您是如何为每个工作人员获得一个数据库连接的。我会对解决方案感兴趣
标签: python postgresql connection-pooling celery