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

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

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

8 ответов

43 просмотра

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

30500 за редактор? )
Владимир
47
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
вы делали что-то подобное и как? может есть либы готовые? увидел картинку нокода, где всё линиями соединено и стало интересно попробовать то же в ddl на lua сделать. решил с ч...
Victor
8
Подскажите пожалуйста, как в CustomDrawCell(Sender: TcxCustomGridTableView; ACanvas: TcxCanvas; AViewInfo: TcxGridTableDataCellViewInfo; var ADone: Boolean); получить наз...
A Z
7
Ребят в СИ можно реализовать ООП?
Николай
33
https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_h_common.erl#L174 https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_olp.erl#L76 15 лет назад...
Maksim Lapshin
20
Как передать управляющий символ в открытую через CreateProcess консоль? Собсна, есть процедура: procedure TRedirectThread.WriteData(Data: OEMString); var Written: Cardinal;...
Serjone
1
Он в одиночку это дело запилил или была какая-то команда?
Aquinary
12
~ 2m21s  nix shell github:nixos/nixpkgs#stack ~  stack ghc -- --version error: … while calling the 'derivationStrict' builtin at /builtin/derivation.nix:...
Rebuild your mind.
6
Всем привет, нужна как никогда, нужна помощь с IO в загрузчике. Пишу в code16 после установки сегментных регистров, пишу вывод символа. Пробовал 2 варианта: # 1 mov $0x0E, %a...
Shadow Akira
14
Карта сайта