线程化的Django任务不会自动处理事务或数据库连接吗?

8 浏览
0 Comments

线程化的Django任务不会自动处理事务或数据库连接吗?

我已经使用Django来设置一些定期任务在它们自己的线程中运行,并且我注意到它们总是会留下未完成的数据库连接进程(pgsql "Idle In Transaction")。我查看了Postgres的日志,发现事务没有被完成(没有ROLLBACK)。我尝试在我的函数上使用不同的事务装饰器,但没有成功。我切换到手动事务管理,并手动执行了回滚,这样可以解决问题,但是仍然将进程保留为"Idle"状态。然后我调用了connection.close(),一切都好了。但我想知道,为什么Django的典型事务和连接管理对于这些从主Django线程派生的线程任务不起作用?

0