[英]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.