Проблемы многопроцессорного пула MySQL Python - PullRequest
0 голосов
/ 22 октября 2019

Ошибка Я получаю:

Lost connection to MySQL server during query

Мой код:

def runDBQuery(bl_sel):
    dbResponse = []
    bl_cur.execute(bl_sel)
    myresult2 = bl_cur.fetchall()
    dbResponse.append(myresult2)
    return(dbResponse)

if __name__ == '__main__':
    p1abl_sel = bl_sel_template.replace("{firstupc}",p1afirstupc).replace("{lastupc}",p1alastupc)
    p2abl_sel = bl_sel_template.replace("{firstupc}",p2afirstupc).replace("{lastupc}",p2alastupc)
    list_of_columns = [ p1abl_sel, p2abl_sel ]
    #list_of_columns = [ p1abl_sel ]
    p = Pool(processes=2)
    data = p.map(runDBQuery, [i for i in list_of_columns])
    # the 4 lines below are my failed attempts to try to resolve this. 
    bl_cur.close()
    if cur and con:
        cur.close()
        con.close()
    p.close()
    print(data)

Когда я раскомментирую list_of_columns, так что в списке только один элемент (запрос), он работаети я получаю ответ от БД. Однако, если у меня есть более одного элемента в списке, я сталкиваюсь с указанной ошибкой.

Может кто-нибудь помочь мне решить эту проблему?

1 Ответ

0 голосов
/ 23 октября 2019

Проблема может быть не в вашем коде.

Ошибка MySQL "Потеря соединения с сервером MySQL во время запроса" может возникать из-за тайм-аута чтения. Это может быть либо на стороне клиента, либо в конфигурации сервера MySQL

MySQL

  • max_execution_time : время ожидания для операторов SELECT в миллисекундах. Если значение равно 0, тайм-ауты не включены.
  • connect_timeout : Количество секунд, в течение которых сервер mysqld ожидает пакета подключения, прежде чем ответить «Плохое рукопожатие»
  • interactive_timeout Количество секунд, в течение которых сервер ожидает активности на интерактивном соединении, прежде чем закрывать его
  • wait_timeout Количество секунд, в течение которых сервер ожидает активности на соединении, прежде чем закрывать его

https://dev.mysql.com/doc/refman/5.7/en/server-system-variables.html#sysvar_max_execution_time

Для проверки PyMysql read_timeout

https://pymysql.readthedocs.io/en/latest/modules/connections.html

...