0

我有一些使用multiprocessing模块和 Django ORM 的脚本。场景很简单:

  1. 获取数据,
  2. 创建 n 个进程并将一部分数据分配给每个进程,
  3. 做一点事,
  4. 使用 Django ORM 保存到数据库中。

好吧,在第 4 步中,我遇到了 Django 没有将所有数据保存在数据库中的问题。准备数据的函数是正确和检查的,但我不知道Django的问题在哪里。在创建进程之前,关闭旧连接,以便每个进程都可以拥有自己的连接。

Django 和多处理是否有问题,或者最大连接数(我最多使用 4 个进程)?



示例代码:
connection.close() #part 我调用函数“fun”,并发送数据 p = Process(target=fun, args=(i, data,)

def fun(i, data):
   result_1 = some_other_fun(data) #this is list
   result_2 = some_other_fun2(data) #this is model specified in models.py

   save_data(result_1, result_2)


def save_data(res1, res2):
   for row in res1:
      res1.fk_to_another_table = res2
      res1.some_info = func()
      res1.save()

长话短说。如果我从 Process 调用 save_data,save() 方法不会在表中保存行。如果在不使用 Process 的情况下调用该方法(只是正常调用脚本),则一切正常。

4

0 回答 0