Могу ли я повторно использовать соединение в mongodb? Как на самом деле работают эти связи? - PullRequest
0 голосов
/ 13 июля 2020

Пытаясь делать простые вещи с помощью mongodb, мой разум застрял в чем-то, что мне кажется странным. код до метода close (). Но, похоже, это не работает ... Я не знаю, как у меня получилось 9 подключений, когда предполагалось, что это будет одно, и даже если каждый «запрос» является подключением, их слишком много

статус подключения

Пока это не большая проблема, меня беспокоит только то, что я точно не знаю, как это работает!

Ответы [ 2 ]

0 голосов
/ 13 июля 2020

Согласно документации , вы должны создать одного клиента для каждого процесса.

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

client = MongoClient(host, port, maxPoolSize=<num>).

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

0 голосов
/ 13 июля 2020

Когда вы делаете new MongoClient(), вы не устанавливаете только одно соединение. Фактически вы создаете клиента, у которого будет пул соединений. Когда вы выполняете один или несколько запросов, драйвер использует доступное соединение из пула. Когда использование завершено, соединение возвращается к пулу.

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

...