Djongo продолжает закрывать и создавать новые соединения с БД MongoClient при каждом запросе

Я использую djongo для соединения моего Django REST framework API с кластером MongoDB, и при регистрации запросов на уровне DEBUG я вижу, что djongo начинает каждый запрос с закрытия существующего соединения MongoClient, создания нового соединения, выполнения запроса, затем снова закрывает соединение.

2021-09-18 13:41:34,714 - DEBUG - djongo.base - Existing MongoClient connection closed
2021-09-18 13:41:34,715 - DEBUG - djongo.base - New Database connection
2021-09-18 13:41:34,716 - DEBUG - djongo.sql2mongo.query - sql_command: ...
2021-09-18 13:41:35,340 - DEBUG - djongo.sql2mongo.query - Aggregation query: ...
2021-09-18 13:41:35,343 - DEBUG - djongo.sql2mongo.query - Result: ...
2021-09-18 13:41:35,454 - DEBUG - djongo.base - MongoClient connection closed

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

Релевантные коды из djongo/base.py:

if self.client_connection is not None:
    self.client_connection.close()
    logger.debug('Existing MongoClient connection closed')

self.client_connection = Database.connect(db=name, **connection_params)
logger.debug('New Database connection')
def _close(self):
    """
    Closes the client connection to the database.
    """
    if self.connection:
        with self.wrap_database_errors:
            self.connection.client.close()
            logger.debug('MongoClient connection closed')

Для установки и настройки я следовал инструкциям djongo GitHub, так что все выглядит следующим образом:

DATABASES = {
    "default": {
        "ENGINE": "djongo",
        "NAME": "django",
        "CLIENT": {
            "host": f"mongodb+srv://{MONGODB_PATH}",
        }
    }
}

(MONGODB_PATH = f"{MONGODB_DJANGO_USER}:{MONGODB_DJANGO_PASS}@{MONGODB_CLUSTER}" из переменных окружения)

Конечная точка API, с которой я тестирую, выглядит следующим образом:

@api_view(["GET"])
@authentication_classes([TokenAuthentication])
@permission_classes([IsAuthenticated])
def test(request):
    if request.method == "GET":
        data = {"user": str(request.user)}
        return JsonResponse(data)

Версии:

Django==3.2.7
djangorestframework==3.12.4
djongo==1.3.6
pymongo==3.12.0 (MongoDB 4.4.8 Enterprise)
Вернуться на верх