как работать с базой данных postgres с помощью сопрограмм - PullRequest
0 голосов
/ 25 июня 2019

Мы создаем бэкэнд-сервис с использованием Asyncio Framework (в нашем случае aiohttp).

Мы используем aiopg для выполнения запросов к базе данных.

Поскольку это однопоточный сервер, какова правильная схема реализации запроса к базе данных:

1) Сервер должен поддерживать только одно соединение, и каждая сопрограмма должна просто aquire() новый курсор на этом объекте соединения?

или

2) Сервер должен открыть новое соединение для каждогосопрограмма?

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

Вопрос о сценарии (2): действительно ли это допустимый сценарий для однопоточного асинхронного сервера?

...