首页 > 解决方案 > 服务器意外关闭连接\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

标签: python-3.xpostgresql

解决方案


推荐阅读