169 похожих чатов

Вопрос о том, как корректно делать несколько конкурентных запросов к

бд из 1 хендлера. aiohttp+asyncpg. Может даже есть хорошие примеры?

8 ответов

28 просмотров

Если из одного хэндлера, то создавая на каждый запрос новый коннект. Если их может быть больше ста то не стоит, нужно юзать очередь

Sergey- Автор вопроса
Айван
Если из одного хэндлера, то создавая на каждый зап...

https://pym.dev/p/2fvpu/ скопировал сгенерированный тест. Я создаю пачку коннекторов, список фьючеров и жду и в gather. Но по сравнению с 1 запросом этот отрабатывает ровно в 10 раз дольше. Подозреваю что-то делаю не так и они последовательно выполняются

Айван
Если из одного хэндлера, то создавая на каждый зап...

Плохой совет. Коннекшены можно переиспользовать, между запросами, не обязательно их открывать на каждый запрос новый. Это довольно ресурсоемкое занятие.

Gleb Fault
Плохой совет. Коннекшены можно переиспользовать, м...

Может неверно переношу опыт с SQLAlchemy, но там сессии аналогичным способом нельзя использовать. Странно. С тем что ресурсоемкое согласен и я бы предпочел либо делать вызовы синхронно, либо использовать очередь

Айван
Может неверно переношу опыт с SQLAlchemy, но там с...

Там сессия - это не коннекшен, а состояния orm, которое действительно надо сбрасывать на каждый запрос. При этом сессия использует коннекшены из пула и не открывает их каждый раз на новый запрос/сессию в общем случае.

Айван
Может неверно переношу опыт с SQLAlchemy, но там с...

Очередь тоже не надо. Сейчас люди начитаются и пойдут строить грабли. У каждого нормального драйвера есть пул, вот вам и очередь. Если этого мало или не достаточно для контроля соединений, то ходите в БД через какой-нибудь pgbouncer. Особенно актуально в микросеврисах.

Gleb Fault
Очередь тоже не надо. Сейчас люди начитаются и пой...

А можно поподробнее про pgbouncer или статью какую-то хорошую?

Похожие вопросы

Обсуждают сегодня

@MrMiscipitlick А можешь макрос написать, который будет вычислять смещение относительно переданных меток? Просто .label1-.label2, и вернуть значение.
КТ315
35
я не магистр хаскеля, но разве не может лейзи тип конвертнуться в не-лейзи запросив вычисление содержимого прям при инициализации?
deadgnom32 λ madao
100
А еще в перле можно уже @arr1 + @arr2?
Sergei Zhmylove
53
Подобного рода ;Следующие три строки это директивы ассемблера, ;которые можно не задавать, т.к.работаем в Visual Studio. ;Символ ";" - это начало однострочного комментария ...
Егор Анелькин
3
Кто-нибудь знает почему SPM клонирует репо целиком? Некоторые репы просто огромные, как та же swift-syntax которая нужна для использования макросов. Сначала подумал, что это...
iMike
6
Привет всем. появился вопрос. Разрабатываю сайт, в данный момент он запущен. Хостинг beget. Добавляю на сайт яндекс метрику с помощью полей client-settings (взято отсюда http...
Andrew
2
Подскажите, где смотреть результат выполнения программы? Код: ;.686 ;Система команд процессора 686 ;.MODEL FLAT,stdcall ;Модель памяти плоская, станда...
Егор Анелькин
5
еще вопрос, допустим мы создадим char массив из 10 элементов и присвоим ему через сканф 10 символов. и выведем все символы. Хотел спросить последний элемент /0 будет включать...
Anthem
11
открыть папку в проводнике: 1 - ShellExecute 2 - ExecuteProcess 3 - OpenDocument что лучше выбрать?
Alexey Kulakov
12
;.686 ;Система команд процессора 686 ;.MODEL FLAT,stdcall ;Модель памяти плоская, стандартный ;вызов процедуры ;option casemap:no...
Егор Анелькин
1
Карта сайта