Django 1.6引入了Persistent Connections feature。但是我注意到退出使用django的ORM的脚本至少留下了一些在db端打开的连接。
设置:django 6.0,postgres 9.2和psycopg2 2.5.1。
如何从脚本中优雅地关闭与数据库的连接?
caveats部分提到django为每个线程打开一个连接,所以在多线程脚本中,django是否为每个线程创建一个连接,即使对于不访问db的线程也是如此?
每个线程是否需要单独关闭数据库连接?
如果上述两个问题的答案都是肯定的,那么你可以对守护程序线程(例如comm)进行什么操作呢?
答案 0 :(得分:5)
我刚刚遇到同样的问题......
当我的线程退出时,通过调用以下代码解决它:
from django.db import close_old_connections
close_old_connections()
答案 1 :(得分:2)
我刚升级并且在启动子流程之前在主流程中出现了close_old_connections
并不像旧的close_connections
那样为每个流程提供自己的连接。但是,如果您查看close_connections
使用的内容,可以重新创建docs。
所以我在创建子流程之前在我的主流程中执行此操作。
from django.db import connections
for conn in connections.all():
conn.close()
它很棒。新的close_old_connections
只会在连接已过期或已离开时关闭连接。