Python 多处理:数据库连接不可用

Python multiprocessing: DB connection not available

我有一个 Django(1.6) 服务器 运行 使用 Python 2.7。我正在尝试使用多处理来并行处理繁重的计算。 在 windows,生成的 python 进程获得数据库连接并能够正常工作。但是在 Linux 服务器上,Python 进程无法访问数据库。

谁能帮我看看如何让它在 Linux 上运行。

代码:

def __init__(self, func):
    self.func = func
    self.pool = Pool(processes=1)

def call(self, *args, **kwargs):
    db.close_connection()
    self.pool.apply_async(self.func, args)

def wait(self):
    self.pool.close()
    self.pool.join()

Django 与所有进程使用相同的数据库连接,因此当您在每个进程中访问数据库时,它们有时会使用相同的连接发生冲突并最终崩溃。

更好的方法是对于子进程中的每个任务强制数据库关闭连接并建立新的数据库连接:

from django import db

def subprocess_task():
    db.close_connection()