Ответ 1
"Неправильный подход" зависит от архитектуры вашего приложения. Поскольку pymongo является поточно-безопасным и автоматическим пулом соединений, фактическое использование единого общего подключения или нескольких соединений будет "работать". Но результаты будут зависеть от того, что вы ожидаете от поведения. Комментарии к документации по обоим случаям.
Если ваше приложение пронумеровано, из документов каждый поток, обращающийся к соединению, получит свой собственный сокет. Таким образом, независимо от того, создаете ли вы одно общее соединение или запрашиваете новый, все зависит от того, были ли ваши запросы потоковыми или нет.
При использовании gevent вы можете иметь сокет на каждую зеленую букву. Это означает, что вам не нужно иметь истинный поток для каждого запроса. Запросы могут быть асинхронными и все еще получать свой собственный сокет.
В двух словах:
- Если ваши запросы в Webapp потоковом, то не имеет значения, каким образом вы получаете доступ к новому соединению. Результат будет таким же (сокет на поток)
- Если ваш webapp асинхронный через gevent, то не имеет значения, каким образом вы получаете доступ к новому коннектору. Результат будет таким же. (гнездо на каждую буклет)
- Если ваш webapp является асинхронным, но НЕ через gevent, тогда вы должны учитывать примечания в наилучшем предлагаемом рабочем процессе.