我有一个Django微服务,它在后台不断运行很多任务(使用一些运行多个线程的子进程),而不管请求 - 响应流程如何。
由于每个线程都经常使用ORM,在某些时候我收到连接到DB的“太多客户端”的错误,在此之后,即使重新启动获得异常的工作人员,它仍然存在。
这很奇怪,因为应用程序从不会并行生成超过30-40个线程,而PostgreSQL DB支持100个,但我想每个线程都会让Django创建一些类似的连接...
我尝试在每个帖子的末尾使用db.connection.close()
,但似乎没有效果。
有没有办法让Django为每个进程使用单个连接游标?为什么它甚至为每个线程/查询/其他什么创建新的连接?
注意:
我不共享工作进程之间的连接。在生成子进程之前,我使用了db.connections.close_all()