Кэширование флешки - обрабатывать исключение, когда служба Redis не работает - PullRequest
0 голосов
/ 07 мая 2018

У меня есть простой код с использованием колбы:

@app.route('/foo/<arg>')
@app.cache.memoize()
def foo_response(arg):
    return 'Hello ' + arg

Это прекрасно работает, когда мой сервер redis (сервер кэша) работает.

Если сервер Redis выходит из строя, при каждом запросе /foo/<arg> возникает исключение, что понятно.

Как (и где) я могу обработать это исключение (например, попробовать-исключить), чтобы не использовать сервер Redis, если он не работает в этот момент?

1 Ответ

0 голосов
/ 08 мая 2018

Это действительно реализовано таким образом. Проверяя источник memoize() в пакете Flask-Cache, вы видите

        try:
            cache_key = decorated_function.make_cache_key(f, *args, **kwargs)
            rv = self.cache.get(cache_key)
        except Exception:
            if current_app.debug:
                raise
            logger.exception("Exception possibly due to cache backend.")
            return f(*args, **kwargs)

Это означает, что если вы находитесь на производстве, т. Е. app.debug=False, вы увидите журнал исключений и функция будет вызываться нормально.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...