Мы создаем бэкэнд-сервис с использованием Asyncio Framework (в нашем случае aiohttp).
Мы используем aiopg для выполнения запросов к базе данных.
Поскольку это однопоточный сервер, какова правильная схема реализации запроса к базе данных:
1) Сервер должен поддерживать только одно соединение, и каждая сопрограмма должна просто aquire()
новый курсор на этом объекте соединения?
или
2) Сервер должен открыть новое соединение для каждогосопрограмма?
Вопрос о сценарии (1): гарантирует ли он параллелизм?Может ли база данных выполнить несколько асинхронных запросов await cursor.execute()
для одного соединения?Я почти уверен, что в не асинхронном режиме курсоры на тех же самых соединениях просто сериализуются.Отличается ли это при использовании async?Если да, то каков максимальный предел курсоров, которые могут быть получены одновременно?
Вопрос о сценарии (2): действительно ли это допустимый сценарий для однопоточного асинхронного сервера?