正确使用python asyncio中的sqlalChemy scope ed_session

问题描述

我正在使用Asyncio构建一个应用程序。我将使用sqlalChemy作为orm。 据我所知,Scope_Session将一个会话与一个线程相关联,这样它们就不会与彼此的操作相关联。 现在,由于asyncio在单个线程上工作,并且我认为Scope_Session将不能正常工作,这将导致问题。 将sqlalChemical会话与Asyncio一起使用的正确方式是什么?


解决方案

答案取决于您的代码。

一般来说,您可以使用sessionmaker创建会话工厂并自行使用。

如果您的代码具有隐式上下文,则可以将scoped_session与自定义scopefunc一起使用,如example中所示。

隐式上下文可以利用asyncio.Task.current_task()调用,但您还需要找到销毁作用域会话的方法。

相关文章