我使用python模塊mysql.connector
連接到AWS RDS
實例。python mysql.connector連接斷開連接寫入失敗30秒
現在,正如我們所知,如果我們暫時不向SQL服務器發送請求,連接就會斷開。
爲了處理這個問題,我重新連接到SQL,以防讀/寫請求失敗。
現在我的問題與「請求失敗」,它需要很大的失敗。然後才能重新連接,然後重試我的請求。 (我已經指出這是代碼片段中的註釋)。
對於像我這樣的實時應用程序,這是一個問題。我怎麼能解決這個問題?是否有可能找出斷開是否已經發生,以便我可以嘗試新的連接,而無需等待讀/寫請求?
這是我如何處理它在我的代碼現在:
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
在我的應用程序不能同時從MySQL讀書容忍超過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分鐘的差距。我正在考慮你提到的無操作查詢方法。謝謝! – vishal