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

280
Views
UWSGI Flask SQLAlchemy Errores intermitentes de PostgreSQL con "ADVERTENCIA: ya hay una transacción en curso"

En mi aplicación UWSGI Flask recibo errores intermitentes como los siguientes:

  • DatabaseError: (psycopg2.DatabaseError) error with no message from the libpq
  • ResourceClosedError: This result object does not return rows. It has been closed automatically.
  • NoSuchColumnError: "Could not locate column in row for column 'my_table.my_column_name_that_exists'"
  • DatabaseError: (psycopg2.DatabaseError) insufficient data in "D" message...lost synchronization with server: got message type "2", length 740303471

En mi registro de postgresql veo: WARNING: there is already a transaction in progress

Actualizar la página web en el matraz generalmente resuelve el error.

Estos son los pasos que tomo para reproducir el error:

  1. detener la aplicación
  2. sudo service postgresql restart
  3. iniciar la aplicación
  4. navegue a una página web en mi aplicación de matraz que realiza varias consultas simultáneas
    • comportamiento esperado: no se registraron errores en la base de datos
    • comportamiento real: se producen uno o más de los errores enumerados anteriormente

Intenté aumentar la verbosidad del registro de postgresql y lo que parece ser un intercambio inadecuado de transacciones virtuales, por ejemplo, a continuación se muestran todas las entradas de registro con la transacción virtual 2/53 y corresponde a los errores anteriores:

 process 8548 session 5901589a.2164 vtransaction 2/53 LOG: statement: BEGIN process 8548 session 5901589a.2164 vtransaction 2/53 LOG: statement: SELECT 1 process 8548 session 5901589a.2164 vtransaction 2/53 LOG: statement: SELECT my_table.id AS my_table_id, ... FROM my_table WHERE my_table.id = 'my_id' LIMIT 1 process 8548 session 5901589a.2164 vtransaction 2/53 LOG: statement: BEGIN process 8548 session 5901589a.2164 vtransaction 2/53 WARNING: there is already a transaction in progress process 8548 session 5901589a.2164 vtransaction 2/53 LOG: statement: SELECT 1 process 8548 session 5901589a.2164 vtransaction 2/53 LOG: statement: SELECT my_other_table.id AS my_other_table_id, ... FROM my_other_table WHERE 'my_other_id' = my_other_table.id process 8548 session 5901589a.2164 vtransaction 2/53 LOG: statement: SELECT my_table.id AS my_table_id, ... FROM my_table WHERE my_table.id = 'my_id' LIMIT 1 process 8548 session 5901589a.2164 vtransaction 2/53 LOG: statement: ROLLBACK
over 4 years ago · Santiago Trujillo
1 answers
Answer question

0

Estos errores son síntomas de conexiones de bases de datos compartidas incorrectamente por varios subprocesos o procesos.

De forma predeterminada, uwsgi bifurca el proceso después de crear la aplicación en el archivo wsgi. Si la creación de la aplicación crea conexiones de base de datos que pueden reutilizarse, es probable que termine con procesos bifurcados que tienen un estado de base de datos corrupto. Para resolver esto en uwsgi hay opciones:

  1. no cree conexiones de base de datos hasta después de crear la aplicación, O
  2. llame a uwsgi con la opción --lazy-apps , que cambia uwsgi a bifurcación antes de que se cree la aplicación

Hay consecuencias de rendimiento negativas para el modo lazy-apps (ver prebifurcación vs aplicaciones perezosas vs perezosas ), por lo que evitar el uso de la base de datos durante la creación de la aplicación es generalmente la mejor opción.

Gracias univerio por explicar esto en los comentarios.

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!