Django middleware может записывать журнал запросов, но django async view somethings не выполняется

запрос будет записан промежуточным ПО и выполнен в async-представлении, но в некоторых случаях он не будет выполнен в представлении.

Настройки:

Python: 3.10.12

Django: 4.2.1

Настройки промежуточного ПО:

MIDDLEWARE = [
    "django.middleware.security.SecurityMiddleware",
    "django.contrib.sessions.middleware.SessionMiddleware",
    "corsheaders.middleware.CorsMiddleware",
    "django.middleware.common.CommonMiddleware",
    "django.contrib.auth.middleware.AuthenticationMiddleware",
    "django.contrib.messages.middleware.MessageMiddleware",
    "django.middleware.clickjacking.XFrameOptionsMiddleware",
    ...
    "utils.middleware.RequestMiddleware",
]

RequestMiddleware:

class RequestMiddleware(MiddlewareMixin):
    def process_view(self, request, view_func, view_args, view_kwargs):
        req_str = "reqeust user:{} request method:{} request path:{} request body:{}".format(
            request.user,
            request.META["REQUEST_METHOD"],
            request.path,
            request.body
        )
        logger.info(req_str)
        return None

    def process_response(self, request, response):
        data = response.content
        data = data.decode("utf-8")
        logger.info("response status code:{} data:{}".format(response.status_code, data))
        return response

    def process_exception(self, request, exception):
        logger.error(traceback.format_exc())

views.py:

async def report(request):
    my_views.delay()  # celery task
    return send_message({"result": 0})
Вернуться на верх