Я столкнулся с той же проблемой. Из-за некоторых других проблем я попытался добавить строку cnx.close()
к моим другим функциям. Вместо этого я удалил все эти посторонние замыкания и установил свой класс следующим образом:
class DBase:
config = {
'user': 'root',
'password': '',
'host': '127.0.0.1',
'database': 'bio',
'raise_on_warnings': True,
'use_pure': False,
}
def __init__(self):
import mysql.connector
self.cnx = mysql.connector.connect(**self.config)
self.cur = self.cnx.cursor(buffered=True)
print(self.cnx)
def __enter__(self):
return DBase()
def __exit__(self, exc_type, exc_val, exc_tb):
self.cnx.commit()
if self.cnx:
self.cnx.close()
Любая функция, вызываемая в этом классе, соединяет, фиксирует и закрывает.
Я протестировал эту конфигурацию с течением времени, мне пришлось проследить с помощью tcpdump
и даже проверить мои журналы, потому что я подозревал, что проблема связана с сетью. Я узнал, что на самом деле клиент CASH
сбрасывал соединение до того, как TLS-рукопожатие завершается.
2019/03/02 06:54:58 [error] 27569#27569: *62 peer closed connection in SSL handshake (104: Connection reset by peer) while SSL handshaking to upstream, client: xx.xx.xx.xx, server: 1270.0.0.1, request: "GET / HTTP/1.1", upstream: "https://xx.xx.xx.xx:1000/", host: "xx.xx.xx.xx:80"
Спасибо всем, что просмотрели, но сценарий правильный.