我有两个芹菜工人通过eventlet汇集,配置如下:
celery multi start w1 w2 -A proj -l info --time-limit=600 -P eventlet -c 1000
一次运行100多个任务时,我会遇到错误:
OperationalError:致命:保留剩余的连接插槽 非复制超级用户连接
我在PostgreSQL上运行max。连接设置为默认值100。
从我在线阅读的内容来看,我认为池中的工作线程将共享相同的数据库连接。但是,我似乎尝试为每个线程创建一个连接,这就是错误发生的原因。
有什么想法吗?
谢谢!
答案 0 :(得分:0)
Django已经(或有?)空闲数据库连接重用,以避免为每个请求创建新连接的开销。在这种情况下,空闲重用与此无关。
Django从来没有限制数据库连接池。 (如果错误请更正)
考虑整体设计:
考虑使用外部[Postgresql连接池](方括号中的谷歌术语)或在应用程序中的某处包含一个。