【发布时间】:2015-02-19 22:24:35
【问题描述】:
在我的应用程序中,我有一个处理一组数据的过程。对于集合的每个元素,我需要运行逻辑来处理它。我的算法按顺序运行得很好,但我需要改进运行时执行,因为有一些 QuerySet 操作需要时间来执行。
如何为每个要使用的线程分配一个新的数据库连接? 我已经看到我可以做到:
from django.db import connection
然后
connection.close
在创建我的线程之前,但有时仍然会失败,并出现来自 Oracle 库的令人讨厌的错误代码。 有没有办法为线程显式创建数据库连接,这样就不会出现这些数据库错误?
【问题讨论】:
-
可能是这样:由于每个线程都维护自己的连接,因此您的数据库必须支持至少与工作线程一样多的同时连接。
-
我明白这一点。这不成问题。我在 Oracle 后端设置了 2014 个连接,并且此过程一次只使用 4 或 5 个。
-
你能发布你收到的错误信息吗?
-
当进程失败时,我在 stdout 上得到以下信息:KPEDBG_POP_KGPPTR_TLS Process finished with exit code 137 我看到这是一个 Oracle 错误代码,可能是由 oracle 客户端库打印的,但我找不到太多关于它的文档。
-
数据库连接是线程本地的since 1.4。无需关闭当前连接或专门做任何事情。
标签: python django database multithreading