timeout-decorator
timeout-decorator copied to clipboard
timeout-decorator doesn't work with mysql-connection-python CMySQLConnection
# mysql.connector version 9.0.0
@timeout_decorator.timeout(timeout=5,
timeout_exception=ConnectionError)
def connect_database(self) -> None:
connection = mysql.connector.connect(
host=self.host,
port=self.port,
user=self.user,
password=self.password,
database=self.database,
# default
use_pure = False,
)
The code above doesn't work, maybe in CMySQLConnection write in C they set signal.alarm(0) when we don't pass connection_timeout in this connect function..
After changing use_pure = True, timeout is working because socket.settimeout(None) will not effect to SIGALRM. This is not an issue, this is a notification for anyone who encounters this issue like me.
# mysql.connector version 9.0.0
@timeout_decorator.timeout(timeout=5,
timeout_exception=ConnectionError)
def connect_database(self) -> None:
connection = mysql.connector.connect(
host=self.host,
port=self.port,
user=self.user,
password=self.password,
database=self.database,
# default
use_pure = True,
)