繁体   English   中英

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

[英]Python multiprocessing: DB connection not available

我有一个使用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()

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

更好的方法是, 对于子进程中的每个任务,您都强制db关闭连接并建立新的db连接:

from django import db

def subprocess_task():
    db.close_connection()

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM