#python #sqlalchemy
Вопрос:
У меня запущено приложение, и время от времени эта трассировка стека отображается в консоли. Однако приложение продолжает работать бесперебойно. В любом случае, мне не очень нравится такое непредсказуемое поведение в приложении. Могу ли я избежать таких сообщений об ошибках? Все запросы возвращаются с правильными данными, обновления работают нормально. Понятия не имею, почему это сообщение продолжает появляться в журналах.
Exception during reset or similar Traceback (most recent call last): File "/usr/local/lib/python3.9/site-packages/sqlalchemy/pool/base.py", line 663, in _finalize_fairy fairy._reset(pool) File "/usr/local/lib/python3.9/site-packages/sqlalchemy/pool/base.py", line 868, in _reset pool._dialect.do_rollback(self) File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/default.py", line 631, in do_rollback dbapi_connection.rollback() psycopg2.OperationalError: server closed the connection unexpectedly This probably means the server terminated abnormally before or while processing the request.
Вот как я создаю пример сеанса и запроса:
engine = create_engine( settings.SQLALCHEMY_DATABASE_URI, pool_pre_ping=True, echo=False, connect_args={"connect_timeout": 30}, pool_size=20, max_overflow=100, ) Base.metadata.create_all(engine) SessionLocal = sessionmaker(expire_on_commit=True, autocommit=False, autoflush=False, bind=engine)
Пример запроса:
def get_user_name(username: str, s=None) -gt; str: if s is None: s = SessionLocal() try: user_obj = s.query(User).filter_by(username=username) if len(list(user_obj)) lt; 1: return username return user_obj.first().first_name except Exception as ex: s.rollback() logger.exception(f"Failed while Error : {ex}")