Py MySQL время ожидания соединения - структура кода - PullRequest
1 голос
/ 13 апреля 2020

Я написал скрипт, который получает данные из базы данных sqlite для загрузки в MySQL базы данных. Структура кода следующая:

def insert_to_mysql(_row):
    # get mysql connection by Pymysql
    connection = pymysql.connect(..., connect_timeout=31536000)
    # insert data
    connection.close

def get_data_from_sqlite(_db):
   for i in sqlite_generator:
       insert_to_mysql(i)

код работает нормально. Но время ожидания соединения без определенного шаблона с приведенной ниже трассировкой очень часто, несмотря на connect_timeout в объекте соединения, и я использую один объект на строку. Моя логика c состоит в том, чтобы создать один объект для строки, чтобы не было проблемы с тайм-аутом.

Может кто-нибудь помочь мне понять, что здесь происходит не так?

Traceback (most recent call last):
  File "/home/santhosh/.local/lib/python3.5/site-packages/pymysql/connections.py", line 691, in _read_bytes
    data = self._rfile.read(num_bytes)
  File "/usr/lib/python3.5/socket.py", line 575, in readinto
    return self._sock.recv_into(b)
TimeoutError: [Errno 110] Connection timed out

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "up_data_upload.py", line 85, in <module>
    import_data(record)
  File "up_data_upload.py", line 43, in import_data
    db='up_scrape_data')
  File "up_data_upload.py", line 31, in get_mysql_connection
    connect_timeout=31536000)
  File "/home/santhosh/.local/lib/python3.5/site-packages/pymysql/__init__.py", line 94, in Connect
    return Connection(*args, **kwargs)
  File "/home/santhosh/.local/lib/python3.5/site-packages/pymysql/connections.py", line 325, in __init__
    self.connect()
  File "/home/santhosh/.local/lib/python3.5/site-packages/pymysql/connections.py", line 598, in connect
    self._get_server_information()
  File "/home/santhosh/.local/lib/python3.5/site-packages/pymysql/connections.py", line 975, in _get_server_information
    packet = self._read_packet()
  File "/home/santhosh/.local/lib/python3.5/site-packages/pymysql/connections.py", line 657, in _read_packet
    packet_header = self._read_bytes(4)
  File "/home/santhosh/.local/lib/python3.5/site-packages/pymysql/connections.py", line 699, in _read_bytes
    "Lost connection to MySQL server during query (%s)" % (e,))
pymysql.err.OperationalError: (2013, 'Lost connection to MySQL server during query ([Errno 110] Connection timed out)')

Спасибо в заранее.

...