Estoy creando una API RESTful que necesita acceder a la base de datos. Estoy usando Restish, Oracle y SQLAlchemy. Sin embargo, trataré de enmarcar mi pregunta de la manera más genérica posible, sin tener en cuenta Restish u otras API web.Establecer tiempo de espera de conexión de base de datos en Python
Me gustaría poder establecer un tiempo de espera para una conexión que ejecuta una consulta. Esto es para garantizar que las consultas de larga ejecución se abandonen y la conexión se descarte (o recicle). Este tiempo de espera de consulta puede ser un valor global, es decir, no es necesario que lo cambie por consulta o creación de conexión.
Dado el siguiente código:
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()
¿Cómo puedo modificar el código anterior para establecer un tiempo de espera de consulta sobre ella? ¿Este tiempo de espera también se aplicará a la creación de conexión?
Esto es similar a lo que hace el método setQueryTimeout (int seconds) de java.sql.Statement en Java.
Gracias
Hola, veo que no se aceptan respuestas negativas ¿encontraste alguna otra solución para esto? – Ib33X
No, no he podido hacer que esto funcione. Las soluciones sugeridas hasta ahora simplemente no funcionan. – oneself
¿Por qué no funciona 'conn.cancel()'? ¿Qué pasa cuando pruebas la solución de Dmitry? – alldayremix