【问题标题】:In Django, how to create a DB connection for every thread在 Django 中,如何为每个线程创建一个数据库连接
【发布时间】: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


【解决方案1】:

如果您看不到详细信息,请分享答案: Django 1.4 开始为每个线程创建一个新的数据库连接。由于我使用的是 Django 1.3.1,因此当多个线程尝试使用相同的数据库连接时,我没有得到这种行为,因此出现了问题。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-09-14
    • 1970-01-01
    • 2020-11-22
    相关资源
    最近更新 更多