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

时间:2016-01-14 11:26:20

标签: python linux django python-multiprocessing

我有一个使用Python 2.7运行的Django(1.6)服务器。我正在尝试使用多处理来执行繁重计算的并行处理。 在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()

1 个答案:

答案 0 :(得分:0)

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

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

from django import db

def subprocess_task():
    db.close_connection()