我有一个使用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()
答案 0 :(得分:0)
Django正在对所有进程使用相同的数据库连接,因此当您在每个进程中访问数据库时,它们有时会使用相同的连接发生冲突并最终崩溃。
对于子流程中的每个任务,更好的方法强制数据库关闭连接并建立新的数据库连接:
from django import db
def subprocess_task():
db.close_connection()