나는 AWS RDS
인스턴스에 연결하기 위해 파이썬 모듈 mysql.connector
을 사용한다.파이썬 mysql.connector 연결 끊기가 30 초 동안 멈춘다.
이제 알다시피 잠시 동안 SQL 서버에 요청을 보내지 않으면 연결이 끊어집니다.
이 문제를 해결하기 위해 읽기/쓰기 요청이 실패한 경우에 대해 SQL에 다시 연결합니다.
이제 내 문제는 "요청이 실패했습니다", 실패하는 것이 중요합니다. 그런 다음 다시 연결하고 요청을 다시 시도 할 수 있습니다. (나는 이것을 코드 스 니펫에서 주석으로 지적했다.)
광산과 같은 실시간 응용 프로그램의 경우 이는 문제입니다. 어떻게 해결할 수 있을까요? 단절이 이미 발생했기 때문에 읽기/쓰기 요청을 기다리지 않고 새로운 연결을 시도 할 수 있는지 확인할 수 있습니까? mysql을 읽는 동안
def fetchFromDB(self, vid_id):
fetch_query = "SELECT * FROM <db>"
success = False
attempts = 0
output = []
while not success and attempts < self.MAX_CONN_ATTEMPTS:
try:
if self.cnx == None:
self._connectDB_()
if self.cnx:
cursor = self.cnx.cursor() # MY PROBLEM: This step takes too long to fail in case the connection has expired.
cursor.execute(fetch_query)
output = []
for entry in cursor:
output.append(entry)
cursor.close()
success = True
attempts = attempts + 1
except Exception as ex:
logging.warning("Error")
if self.cnx != None:
try:
self.cnx.close()
except Exception as ex:
pass
finally:
self.cnx = None
return output
내 응용 프로그램에서 나는 1 초 이상의 지연을 용인 할 수 없다 : 여기
내가 지금 내 코드에서 그것을 처리하는 방법입니다.
MySQL의를 구성하는 동안 , 내가 뭘 단지 다음 설정을
SQL.user = '<username>'
SQL.password = '<password>'
SQL.host = '<AWS RDS HOST>'
SQL.port = 3306
SQL.raise_on_warnings = True
SQL.use_pure = True
SQL.database = <database-name>
쿼리 간격은 고정되어 있지 않습니다. 때때로 우리는 짧은 시간에 많은 질문을합니다. 그리고 때로는 5 분의 간격이있을 수 있습니다. 당신이 언급 한 no-op 쿼리 방식을 고려 중입니다. 감사! – vishal