J'utilise sqlachemy pour me connecter à une base de données distante mais je ne connais pas le type (peut être PostgreSQL, MariaDB, etc.). Je les essaie dans une boucle et je garde le premier pilote de travail:sqlalchemy engine.connect() bloqué
for driver in drivers:
try:
uri = get_uri_from_driver(driver)
engine = create_engine(uri, echo=False)
print('Try connection')
con = engine.engine.connect()
# Try to get some lines
return engine
except Exception:
continue
return None
Dans certains cas, la con = engine.engine.connect() ne finit pas et il se produit lorsque vous essayez le pilote MySQL pour se connecter à quelque chose qui n'est pas MySQL (Oracle).
Questions:
Comment puis-je définir un délai à cela?
Si je ne peux pas, y a-t-il un autre moyen d'y parvenir? (Je par exemple la base l'ordre de test avec le port par défaut, mais je voudrais être en mesure de tuer le connect() après quelques secondes
EDIT:.
Ce code est dans un Django si Je ne peux pas utiliser le signal/alarme en raison de multi-threading
Ne fonctionne pas avec Django (multi-thread): ValueError: le signal ne fonctionne que dans le thread principal. J'ajoute ceci à la question – Benjamin