The question basically boils down to whether the following is safe, assuming there is a new SQLAlchemy session s
being created everytime this function is invoked:
async def func(s: Session):
loop = asyncio.get_running_loop()
await loop.run_in_executor(None, some_func, s)
await loop.run_in_executor(None, some_other_func, s)
...
I'm thinking that it is safe because even though the session is used in (potentially) two different threads in the two run_in_executor
calls, those two calls are not concurrent, since the second call won't be executed until the first one completes. This means the session is not accessed concurrently. Am I right in thinking that?
question from:
https://stackoverflow.com/questions/65650198/sqlalchemy-using-the-same-session-across-threads-in-the-same-async-function 与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…