我偶尔会注意到使用 SQLAlchemy 的 Flask Celery 应用程序中出现此类错误。
当我检查数据库连接时,一切正常。该应用程序似乎以某种方式失去了与 PostgreSQL 数据库服务器的连接。
[2021-02-08 00:01:00,124: ERROR/ForkPoolWorker-1] Task gbms.celery_service.create_recurring_tasks[04c258ab-9162-44ed-86ff-f90c4a214fd2] raised unexpected: DatabaseError('(psycopg2.DatabaseError) error with status PGRES_TUPLES_OK and no message from the libpq')
Traceback (most recent call last):
File "/gbmsenv/lib64/python3.8/site-packages/sqlalchemy/engine/base.py", line 1276, in _execute_context
self.dialect.do_execute(
File "/gbmsenv/lib64/python3.8/site-packages/sqlalchemy/engine/default.py", line 593, in do_execute
cursor.execute(statement, parameters)
psycopg2.DatabaseError: error with status PGRES_TUPLES_OK and no message from the libpq
The above exception was the direct cause of the following exception:
我应该采取哪些步骤来找出原因并解决问题?
i 使用 Gunicorn Workers 每 1000 个请求重新启动一次。所以每个worker都在内核级别运行,并为每个worker分配一个唯一的pid。因此,当工作程序在 1000 个请求后重新启动时,在重新启动之前,它会检查是否有任何后台任务正在运行,如果没有,则它将重新启动。所以我的问题是
如果他们检查后台任务那么为什么他关闭以前请求的数据库对象??
我的内存消耗问题已由gunicorn 修复,但我面临这个新问题!!!
有些错误
(psycopg2.DatabaseError) 错误,状态为 PGRES_TUPLES_OK 并且没有来自 libpq 的消息
(psycopg2.OperationalError) 服务器意外关闭连接 这可能意味着服务器异常终止 在处理请求之前或期间。
对此问题的任何建议(guvicorn 相关)