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

343
Views
cx_oracle conexión persistente en matraz+apache+mod_wsgi

He implementado mi aplicación de matraz en apache+mod_wsgi

Estoy usando el modo WSGI Daemon y tengo esta configuración en apache httpd.conf:

WSGIDaemonProcess flask_test user=apache group=apache threads=20

Para simplificar, digamos que para cada solicitud, necesito ejecutar una consulta para insertar datos en Oracle DataBase.

Entonces, en mi aplicación de matraz, he hecho algo como esto:

 # DB.py import cx_Oracle class DB: def __init__(self, connection_string): self.conn = cx_Oracle.connect(connection_string, threaded=True) def insert(query): cur = self.conn.cursor() cur.execute(query) cur.close() self.conn.commit()
 # flask_app.py from flask import Flask, request, jsonify from DB import DB app = Flask(__name__) db = DB(connection_string) @app.route("/foo", methods=["POST"]) def foo(): post_data = request.get_json() # parse above data # create insert query with parsed data values db.insert(insert_processed_data_QUERY) # generate response return jsonify(response)

Cuando inicio el servidor apache+mod_wsgi, se crea el objeto DB y se establece la conexión DB. Para todas las solicitudes entrantes, se utiliza el mismo objeto DB para ejecutar la consulta de inserción.

Hasta ahora esto funciona bien para mí. Sin embargo, mi preocupación es que si no hay solicitudes durante un largo período de tiempo, la conexión de la base de datos podría agotarse y mi aplicación no funcionará para una nueva solicitud cuando llegue.

He estado monitoreando mi aplicación y he observado que la conexión a la base de datos persiste durante horas y horas. Pero estoy bastante seguro de que podría agotarse si no hay una solicitud durante 2-3 días (?)

¿Cuál sería la forma correcta de garantizar que la conexión DB permanecerá abierta para siempre? (es decir, mientras el servidor apache se esté ejecutando)

over 4 years ago · Santiago Trujillo
1 answers
Answer question

0

Utilice un grupo en lugar de una conexión independiente. Cuando adquiere una conexión del grupo, verificará si la conexión ya no es válida y dispensará automáticamente una nueva. Así que necesitas algo como esto:

 pool = cx_Oracle.SessionPool(user=user, password=password, dsn=dsn, min=1, max=2, increment=1)

Luego, en su código, debe hacer lo siguiente:

 with pool.acquire() as connection: # do what you need to do with the connection
over 4 years ago · Santiago Trujillo Report
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!