Size: a a a

2020 October 03

KK

Kirill (Cykooz) Kuzm... in rannts
Хм, кроме дропа второго питона ни каких других значительных изменений нет.
источник
2020 October 04

VD

Vladimir Deev in rannts
ого, а обещали в декабре вроде
источник

VD

Vladimir Deev in rannts
Kirill (Cykooz) Kuzminykh
Хм, кроме дропа второго питона ни каких других значительных изменений нет.
должны были asyncio завезти, но я ни слова про него не вижу..
источник

AM

Artem Malyshev in rannts
Vladimir Deev
должны были asyncio завезти, но я ни слова про него не вижу..
И тайпинг.
источник
2020 October 05

RB

Roman Bolkhovitin in rannts
Привет! Подскажите как бы мне выпилить из проекта монгоэнджин и не ошалеть

Зачем: проект на твистеде, кто-то нехороший когда-то засунул в него синхронный драйвер, даже в треды не завернул

Монгоэнджин размазан по всему проекту, никакого DAL, репозиториев и вот этого всего.

Нужны крутилки типа hint, read_preference

Думается что txmongo + pydantic могут спасти отца русской демократии, но цельной картины как это провернуть не складывается

И второй вопрос, в продолжение первого - как оценить какой размер пула соединений к монге нужен сервису
источник

RB

Roman Bolkhovitin in rannts
И еще - кто-нибудь пользуется motorengine? А то есть наркоманская идея, завести всё на asyncio reactor и вместо mongoengine воткнуть motorengine, но останавливает что motorengine кажется умер года три назад
источник

БС

Байт Словович... in rannts
> И второй вопрос, в продолжение первого - как оценить какой размер пула соединений к монге нужен сервису
Чем меньше, тем лучше. Есть такая практика выкручивать размер пула, типа больше параллельности будет и всё полетит. Так вот, это не работает.
Я с монгой давно дел не имел, но раньше она была  "почти однопоточная" (запросы на треды не паралелились, а внутренние локи мешали эффективно проц использовать).
Поэтому делай минимальный пул, который можешь. Пусть лучше твой код на локе висит, чем будет излишне много лочиться база данных.
источник

RB

Roman Bolkhovitin in rannts
До 2.6 она при записи лочила всю базу, но с версии 3.0 на старом движке лочит коллекцию, а на WiredTiger отдельный документ
источник

KK

Kirill (Cykooz) Kuzm... in rannts
Roman Bolkhovitin
Привет! Подскажите как бы мне выпилить из проекта монгоэнджин и не ошалеть

Зачем: проект на твистеде, кто-то нехороший когда-то засунул в него синхронный драйвер, даже в треды не завернул

Монгоэнджин размазан по всему проекту, никакого DAL, репозиториев и вот этого всего.

Нужны крутилки типа hint, read_preference

Думается что txmongo + pydantic могут спасти отца русской демократии, но цельной картины как это провернуть не складывается

И второй вопрос, в продолжение первого - как оценить какой размер пула соединений к монге нужен сервису
А там где-то ещё и пул настраивается что-ли? Я вот под asyncio ничего такого не настраивал. Просто использую motor с минимальным набором настроек.
источник

RB

Roman Bolkhovitin in rannts
в pymongo да, можно в конструктор MongoClient передавать, можно прям в connection_string указать. в моторе вроде api такой же
источник

SA

Sergey Arkhipov in rannts
В Motor тоже настраивается. Motor просто тоненько прикрывает старый pymongo
источник

RB

Roman Bolkhovitin in rannts
я мотор одним глазом смотрел, кажется там внутри на тредах все
источник

БС

Байт Словович... in rannts
Roman Bolkhovitin
До 2.6 она при записи лочила всю базу, но с версии 3.0 на старом движке лочит коллекцию, а на WiredTiger отдельный документ
Кроме общих локов, есть локи на внутренние служебные структуры самой базы которые в памяти лежат. Кэши всякие.  Поэтому не надейся, что она принципиально стало другой.
В постгрессе параллельность далека от идеала, а уж монга рядом не лежала (вернее как раз лежала на нагрузках постгри :-)  )
Поэтому не гонись за большим пулом.
Возьми число ядер на сервере с бд и умножь на pi и получишь примерное число коннекшенов которые особо не будут толкаться между собой.
источник

AS

Artem Savinov in rannts
Байт Словович
Кроме общих локов, есть локи на внутренние служебные структуры самой базы которые в памяти лежат. Кэши всякие.  Поэтому не надейся, что она принципиально стало другой.
В постгрессе параллельность далека от идеала, а уж монга рядом не лежала (вернее как раз лежала на нагрузках постгри :-)  )
Поэтому не гонись за большим пулом.
Возьми число ядер на сервере с бд и умножь на pi и получишь примерное число коннекшенов которые особо не будут толкаться между собой.
почему на pi ?
источник

БС

Байт Словович... in rannts
потому что я люблю волшебные буквы из математики..
источник

БС

Байт Словович... in rannts
эмпирическая оценка..
источник

БС

Байт Словович... in rannts
раньше рекомендовали два или три соединения на ядро, при более менее нормальной работе, а не при запуске бэнчей.
источник

SZ

Sergey Z in rannts
какой смысл использовать в расчётах количество ядер, если монга "примерно однопоточная"?
источник

KK

Kirill (Cykooz) Kuzm... in rannts
Roman Bolkhovitin
я мотор одним глазом смотрел, кажется там внутри на тредах все
Нет, там нормальный asyncio, без тредов. Если там и есть тред один - то от pymongo
источник

RB

Roman Bolkhovitin in rannts
https://motor.readthedocs.io/en/stable/configuration.html#thread-pool-size

Motor uses the Python standard library’s ThreadPoolExecutor to defer network operations to threads. By default, the executor uses at most five threads per CPU core on your system; to override the default set the environment variable MOTOR_MAX_WORKERS.

Some additional threads are used for monitoring servers and background tasks, so the total count of threads in your process will be greater.

🤷‍♂
источник