Промежуточное ПО Django - исключить для определенного пути - PullRequest
0 голосов
/ 16 июня 2019

Я реализовал проверку работоспособности веб-сервера Django

Проверка работоспособности по умолчанию вызывает все промежуточные программы, которые выполняют аннулирование кэша, вызовы БД, вызовы флагов функций и т. Д.

Я бы не хотел вызывать промежуточное программное обеспечение для этого конкретного пути

Для каждого промежуточного программного обеспечения существует метод __call__, в котором выполняется код

где я могу определить, какое промежуточное программное обеспечение будет выполняться на основе пути?

1 Ответ

0 голосов
/ 16 июня 2019

Мое решение проблемы - использование декоратора

def skip_for_paths(paths_to_exclude):
"""
decorator for skipping middleware based on path
"""
def decorator(f):
    def check_if_health(self, request):
        if request.path in paths_to_exclude:
            return self.get_response(request)
        return f(self, request)
    return check_if_health
return decorator

и промежуточного программного обеспечения:

    @skip_for_paths(['/workflows/v1/health/'])
def __call__(self, request):
    # Code to be executed for each request before

    response = self.get_response(request)

    response['Cache-Control'] = "no-cache"
    # Code to be executed for each request/response after
    # the view is called.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...