timeout-decorator icon indicating copy to clipboard operation
timeout-decorator copied to clipboard

timeout-decorator doesn't work with mysql-connection-python CMySQLConnection

Open ToanLyHoa opened this issue 1 year ago • 1 comments


# 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..

ToanLyHoa avatar Jul 11 '24 07:07 ToanLyHoa

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,
      )
    

ToanLyHoa avatar Jul 11 '24 07:07 ToanLyHoa