Django不会通过多处理将行插入表中

时间:2014-10-27 10:50:48

标签: python django django-models python-multiprocessing

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

  1. 获取数据,
  2. 创建n个流程并为每个流程分配一部分数据,
  3. 做点什么,
  4. 使用Django ORM保存到DB中。
  5. 好吧,在第4步中,我遇到Django没有在DB中保存所有数据的问题。准备数据的功能是正确的和检查,但我不知道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(只是正常调用脚本)的情况下调用该方法,则一切正常。

0 个答案:

没有答案