如何从多进程(子进程)获取django.db.connection.queries数据?

时间:2016-01-14 07:56:10

标签: python django oracle11g

我正在使用Django modelOracle,并且有两个进程分别有数据库连接。

为了使两个进程分别具有数据库连接,我首先在分支进程之前关闭主进程中的连接,然后分叉一个新进程,以防止子进程复制数据库连接。

    from django.db import connection 
    connection.close()

    childProcess.start()

因此,每个进程在首次尝试通过Django模型访问数据库时都会重新打开数据库连接。

在这种情况下,在主进程中,它可以正常运行django.db.connection.queries返回查询信息,但在子进程中它总是返回一个空列表。

如何使用django.db.connection.queries在子进程中获取查询信息?

1 个答案:

答案 0 :(得分:1)

我发现我问的问题出了什么问题。

在子进程中,它创建一个新的线程。

此线程仅监视由主线程操作的查询(在子进程中)。

我认为connection提供的Django对象是进程中的global资源。(这就是为什么我将线程规则分开,一个是运行查询而另一个是运行查询是监视查询。)

但是,经过一系列测试后,我发现connection对象只收集Thread操作的查询信息。

这意味着每个线程运行django.db.connection而不是进程。

因此,我误认为问题是多处理问题的原因。