在每个进程中使用db queires在django中进行多处理

时间:2017-05-22 08:46:38

标签: python mysql django

我在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

0 个答案:

没有答案