Метод 1: установка времени ожидания подключения
import mysql.connector
config = {
'user': 'your_username',
'password': 'your_password',
'host': 'your_host',
'database': 'your_database',
'connection_timeout': 10 # Set the connection timeout value in seconds
}
try:
connection = mysql.connector.connect(config)
# Perform database operations
except mysql.connector.Error as error:
print("Error: {}".format(error))
finally:
if 'connection' in locals():
connection.close()
Метод 2: установка времени ожидания запроса
import mysql.connector
config = {
'user': 'your_username',
'password': 'your_password',
'host': 'your_host',
'database': 'your_database',
}
try:
connection = mysql.connector.connect(config)
cursor = connection.cursor()
cursor.execute("SET SESSION MAX_EXECUTION_TIME=10000") # Set query timeout to 10 seconds
cursor.execute("SELECT * FROM your_table")
result = cursor.fetchall()
# Process the query result
except mysql.connector.Error as error:
print("Error: {}".format(error))
finally:
if 'connection' in locals():
connection.close()
Метод 3: использование параметра времени ожидания соединения
import mysql.connector
config = {
'user': 'your_username',
'password': 'your_password',
'host': 'your_host',
'database': 'your_database',
}
try:
connection = mysql.connector.connect(config, connect_timeout=10) # Set connection timeout to 10 seconds
# Perform database operations
except mysql.connector.Error as error:
print("Error: {}".format(error))
finally:
if 'connection' in locals():
connection.close()
Метод 4. Использование декоратора тайм-аута
import mysql.connector
import signal
class TimeoutError(Exception):
pass
def timeout_handler(signum, frame):
raise TimeoutError("Timeout occurred")
def query_with_timeout(query, timeout):
signal.signal(signal.SIGALRM, timeout_handler)
signal.alarm(timeout)
try:
connection = mysql.connector.connect(user='your_username', password='your_password', host='your_host', database='your_database')
cursor = connection.cursor()
cursor.execute(query)
result = cursor.fetchall()
return result
except TimeoutError:
print("Query timeout")
except mysql.connector.Error as error:
print("Error: {}".format(error))
finally:
signal.alarm(0)
# Usage
result = query_with_timeout("SELECT * FROM your_table", 10) # Set timeout to 10 seconds
Это некоторые методы, которые вы можете использовать для обработки тайм-аутов при использовании MySQL Connector в Python. Выберите метод, который лучше всего соответствует вашим требованиям.