sqlalchemy.exc.StatementError: (sqlalchemy.exc.InvalidRequestError) 在回滚无效事务之前无法重新连接



我正在运行FastAPI和SQLAlchemy的设置,以拥有一个运行基本CRUD操作的web服务器。一段时间后,服务器在docker容器中启动,我收到以下错误消息

sqlalchemy.exc.StatementError: (sqlalchemy.exc.InvalidRequestError) Can't reconnect until invalid transaction is rolled back
FROM users 
WHERE users.email = %s]
[parameters: [immutabledict({})]]
INFO:- "POST /routename HTTP/1.0" 500 Internal Server Error
2020-11-23T11:54:38.764592599Z ERROR:    Exception in ASGI application

据我所知,这个问题与会议和会议闭幕有关。

这是有问题的路线

@app.post('/routename')
async def getLogin(request: GetLoginRequest):
...
what it does here it just fetches the current user and verifies by come parameters
...
session.close()
return JSONResponse(content=currentUser)

我不知道为什么它会崩溃,尽管最后有session.close()

我在应用程序的根目录中定义我的会话

SQLALCHEMY_DATABASE_URL = settings.connection_string
engine = create_engine(SQLALCHEMY_DATABASE_URL)
Session = sessionmaker(autocommit=False, autoflush=False, bind=engine)
session = Session()
Base = automap_base()

老实说,我相信这只是一个SQLAlchemy会话问题,而不是FASTApi问题,但我无法破解问题所在以及它不断崩溃的原因。

我在运行一个等待数据的长会话时遇到了同样的错误。我的解决方案:

try:
session.close()
except:
session.rollback()
session.close()

相关内容

最新更新