我有一些使用multiprocessing
模块和Django ORM的脚本。
场景非常简单:
好吧,在第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(只是正常调用脚本)的情况下调用该方法,则一切正常。