Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

274
Views
Cómo hacer un grupo de conexiones en psycopg2 que pueda manejar un reinicio de base de datos

Estoy usando psycopg2 en una aplicación FastAPI, con un ThreadedConnectionPool.
Uso putconn(conn) en uso normal, pero cuando la base de datos se reinicia, la conexión permanece abierta y el grupo se llena. Luego, la aplicación FastAPI no puede obtener una nueva conexión del grupo, con el error "Grupo de conexiones agotado". Reiniciar la aplicación FastAPI borra el grupo, pero ¿cómo puedo hacerlo automáticamente?

Lo que he hecho hasta ahora:
Tengo una función, que se ejecuta en el inicio de FastAPI:

 @app.on_event("startup") def open_connection_pool(): try: global LOCAL_CON_POOL LOCAL_CON_POOL = psycopg2.pool.ThreadedConnectionPool(1,3,CONNSTRING) except Exception as ex: logging.error(ex)

Luego uso LOCAL_CON_POOL:

 def get_db_conn_from_pool(): try: local_conn = LOCAL_CON_POOL.getconn() return local_conn except Exception as ex: try: putconn(local_conn) except Exception as ex1: logging.error(ex1) rasie ex1

Entonces uso la conexión:

 def get_db_data(): try: node_conn = get_db_conn_from_pool() with node_conn.cursor() as node_cur: node_cur.execute(query) data = node_cur.fetchone()[0] LOCAL_CON_POOL.putconn(node_conn) return data except exception as ex: logging.error("Couldnt get data from db")

Poner un putconn() en un bloque finally dentro de get_db_data() da como resultado una variable referenced before assignment .

over 4 years ago · Santiago Trujillo
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!