我们正在使用 asyncio 框架(在我们的例子中为 aiohttp)构建一个后端服务。
我们正在使用 aiopg 对数据库进行查询。
由于这是单线程服务器,因此进行数据库查询的正确实现模式是什么:
1)服务器应该只保留一个连接,每个协程应该只是aquire()
该连接对象上的一个新光标?
或者
2)服务器应该为每个协程打开一个新连接?
关于场景(1)的问题:它是否保证并发?await cursor.execute()
数据库可以在一个连接上运行多个异步查询吗?我很确定在非异步模式下,相同连接上的游标会被简单地序列化。使用异步时这有什么不同吗?如果是,可以同时获取的光标的最大限制是多少?
关于场景 (2) 的问题:对于单线程异步服务器来说,这是一个有效的场景吗?