我在db中有大约30k项,每个项必须被处理并转储到文件中。
def reset_database_connection():
from django import db
db.close_old_connections()
all_ids = [q_id for q_id in MyModel.objects.values_list('id', flat=True)]
# chunk the huge list into 5 parts
chunked_all_ids = [all_ids[i::5] for i in xrange(5)]
for ids in chunked_all_ids:
p = Process(target=my_script, args=(ids, ids[0]))
# close parent process db connection, so each new process creates its own one
reset_database_connection()
p.start()
p.join()
在my_script
我将查询数据库,获取一些信息并写入文件。在my_script中,我将再次重置数据库连接,查询会在更长时间内发生
当我运行代码时,我将从Process-2开始出错
OperationalError: (2006, 'MySQL server has gone away')
我在这里做错了什么?如何创建5个进程,每个进程可以自己处理6k项而不会丢失数据库连接?
我正在使用python2和django 1.8