python-3.x - 服务器意外关闭连接\n\t这可能意味着服务器异常终止\n\t在处理请求之前或期间
问题描述
我正在使用 sqlalchemy( sqlalchemy==1.4.6
) 进行查询,数据库是 PostgreSQL 13,这是我的 Python 3 代码,如下所示:
def select_channel_by_id(self, channel_id):
with session_scope() as local_session:
rss = None
try:
rss = local_session.query(RssSource).filter(RssSource.id == channel_id).one()
except SQLAlchemyError as e:
local_session.rollback()
logger.error("query rss source by id error", e)
finally:
local_session.close()
return rss
当我运行此代码时,显示如下错误:
[2021-10-25 18:42:00,040: WARNING/ForkPoolWorker-3] File "/usr/local/lib/python3.9/site-packages/celery/app/trace.py", line 731, in __protected_call__
return self.run(*args, **kwargs)
[2021-10-25 18:42:00,040: WARNING/ForkPoolWorker-3] File "/root/pydolphin/dolphin/tasks/tasks.py", line 33, in pull_channel_impl
source = rss.select_channel_by_id(channel_id)
[2021-10-25 18:42:00,040: WARNING/ForkPoolWorker-3] File "/root/pydolphin/dolphin/common/db/rss_source.py", line 61, in select_channel_by_id
logger.error("query rss source by id error", e)
[2021-10-25 18:42:00,040: WARNING/ForkPoolWorker-3] Message: 'query rss source by id error'
Arguments: (OperationalError('(psycopg2.OperationalError) server closed the connection unexpectedly\n\tThis probably means the server terminated abnormally\n\tbefore or while processing the request.\n'),)
为什么会这样?我应该怎么做才能解决这个问题?顺便说一句,这是我的会话范围:
@contextmanager
def session_scope():
scope_session = Session()
try:
yield scope_session
scope_session.commit()
except Exception as e:
scope_session.rollback()
logger.error("session management error", e)
finally:
scope_session.close()
这是我的 PostgreSQL(部署在 kubernetes 集群中)日志如下所示:
2021-10-25 11:03:34.794 GMT [29779] LOG: could not receive data from client: Connection reset by peer
2021-10-25 11:04:07.562 GMT [29800] LOG: could not receive data from client: Connection reset by peer
2021-10-25 11:04:07.563 GMT [29801] LOG: could not receive data from client: Connection reset by peer
2021-10-25 11:04:07.565 GMT [29799] LOG: could not receive data from client: Connection reset by peer
2021-10-25 11:04:07.566 GMT [29796] LOG: could not receive data from client: Connection reset by peer
2021-10-25 11:04:07.568 GMT [29795] LOG: could not receive data from client: Connection reset by peer
2021-10-25 11:04:07.569 GMT [29798] LOG: could not receive data from client: Connection reset by peer
2021-10-25 11:04:07.571 GMT [29794] LOG: could not receive data from client: Connection reset by peer
2021-10-25 11:04:07.572 GMT [29797] LOG: could not receive data from client: Connection reset by peer
解决方案
推荐阅读
- node.js - 抓取网站在 Node.JS 中返回意外的空值
- go - Golang,带有值接收器的函数的函数指针,在第二次调用时不会使用更改的接收器调用该函数
- ios - 使用两个不同的自定义 UITableView Cells
- pandas - 如何在pyspark中连接文本列之前对值进行排序
- android - Android SensorManager 与 Google Fit 的步数
- c++ - gperftools - 只测量一个函数
- reactjs - 如何在 React 中检查此导入数据的数据结构
- c++ - LAPACKE_dgesvd 的英特尔 MKL 不匹配结果
- pine-script - 如何访问不同时间级别的数据
- .net-core - .Net Core 3.1 在 MacOS 应用程序上使用 ManagementObjectSearcher("SELECT * FROM Win32_USBHub")