Ich erstelle eine RESTful-API, die auf die Datenbank zugreifen muss. Ich benutze Restish, Oracle und SQLAlchemy. Ich versuche jedoch, meine Frage so allgemein wie möglich zu formulieren, ohne Restish oder andere Web-APIs zu berücksichtigen.Festlegen der Zeitüberschreitung bei der Datenbankverbindung in Python
Ich möchte in der Lage sein, ein Timeout für eine Verbindung festzulegen, die eine Abfrage ausführt. Auf diese Weise wird sichergestellt, dass Abfragen mit langer Laufzeit abgebrochen und die Verbindung verworfen (oder wiederverwendet) wird. Dieses Abfragetimeout kann ein globaler Wert sein, dh ich muss es nicht nach Abfrage oder Verbindungserstellung ändern.
den folgenden Code Gegeben:
import cx_Oracle
import sqlalchemy.pool as pool
conn_pool = pool.manage(cx_Oracle)
conn = conn_pool.connect("username/[email protected]")
conn.ping()
try:
cursor = conn.cursor()
cursor.execute("SELECT * FROM really_slow_query")
print cursor.fetchone()
finally:
cursor.close()
Wie kann ich den obigen Code ändern auf eine Abfrage-Timeout zu setzen? Wird diese Zeitüberschreitung auch für die Verbindungserstellung gelten?
Dies ist ähnlich wie die Methode setQueryTimeout (int seconds) von java.sql.Statement in Java.
Dank
Hallo, ich sehe, dass keine aus Antworten akzeptiert wird hast du eine andere Lösung dafür gefunden? – Ib33X
Nein, ich konnte diese Arbeit nicht machen. Die bisher vorgeschlagenen Lösungen funktionieren einfach nicht. – oneself
Warum funktioniert 'conn.cancel()' nicht? Was passiert, wenn Sie Dmitrys Lösung ausprobieren? – alldayremix