РЕПЕТИТОР математика физика информатика
Для школьников и студентов. Подтягивание пробелов. ЦЭ, ЦТ, ОГЭ, ЕГЭ.
Идет набор на ЛЕТО. Жмите для подробностей:)
211 of 307 menu

Параметр use_cache

Параметр use_cache применяется в классах безопасности FastAPI, таких как OAuth2PasswordBearer, OAuth2AuthorizationCodeBearer, HTTPBearer и других. Он определяет, будет ли схема безопасности кешироваться при многократном использовании в разных зависимостях. По умолчанию параметр равен True, что означает включённое кеширование. Если установить False, то при каждом запросе схема безопасности будет создаваться заново.

Кеширование полезно, когда одна и та же схема безопасности используется в нескольких местах приложения. Это экономит ресурсы и ускоряет обработку запросов. Однако в редких случаях, например при динамической смене параметров схемы, кеш может мешать, и тогда его отключают.

Синтаксис

OAuth2PasswordBearer(tokenUrl, use_cache=True)

Пример

Давайте создадим схему OAuth2PasswordBearer с включённым кешированием и применим её в маршруте:

from fastapi import FastAPI, Depends from fastapi.security import OAuth2PasswordBearer app = FastAPI() oauth2_scheme = OAuth2PasswordBearer( tokenUrl='token', use_cache=True ) @app.get('/items/') def read_items(token: str = Depends(oauth2_scheme)): return {'token': token}

При каждом запросе к /items/ FastAPI возьмёт схему из кеша, а не создаст её заново.

Пример

Давайте отключим кеширование, установив use_cache=False:

from fastapi import FastAPI, Depends from fastapi.security import OAuth2PasswordBearer app = FastAPI() oauth2_scheme = OAuth2PasswordBearer( tokenUrl='token', use_cache=False ) @app.get('/users/') def read_users(token: str = Depends(oauth2_scheme)): return {'token': token}

Теперь схема безопасности будет создаваться заново при каждом запросе к /users/.

Пример

Давайте сравним поведение двух зависимостей с разными значениями use_cache в одном приложении:

from fastapi import FastAPI, Depends from fastapi.security import OAuth2PasswordBearer app = FastAPI() cached_scheme = OAuth2PasswordBearer( tokenUrl='token', use_cache=True ) uncached_scheme = OAuth2PasswordBearer( tokenUrl='token', use_cache=False ) @app.get('/cached/') def cached_route(token: str = Depends(cached_scheme)): return {'token': token, 'cached': True} @app.get('/uncached/') def uncached_route(token: str = Depends(uncached_scheme)): return {'token': token, 'cached': False}

Результат выполнения кода для адреса /cached/:

{"token": "abcde", "cached": true}

Результат выполнения кода для адреса /uncached/:

{"token": "abcde", "cached": false}

Смотрите также

  • класс OAuth2PasswordBearer,
    который извлекает токен из заголовка Authorization
  • класс HTTPBearer,
    который реализует HTTP Bearer аутентификацию
  • функция Depends,
    которая внедряет зависимости в маршруты
  • класс Security,
    который расширяет Depends для схем безопасности
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить