ответ кеша в python - PullRequest
       5

ответ кеша в python

0 голосов
/ 28 марта 2020

У меня есть сценарий, в котором я хочу кэшировать ответ JSON и использовать его дальше. У меня есть всего два запроса, из которых один я хочу кэшировать и использовать ответ в другом запросе, однако другой запрос не должен кэшироваться. На данный момент, что я попробовал кеш все запросы. Вот что я пробовал:

import requests
import requests_cache
requests_cache.install_cache('test_cache', expire_after=120)
r = requests.get('http://localhost:5000/')
print(r.content)
r1 = requests.get('http://localhost:5000/nocach')
print(r1.content)

Здесь я хочу, чтобы только запросы должны кэшироваться для r, а не для r1.

Есть ли другой способ, который поддерживает мой Сценарий на данный момент я использую requests-cache, который кэширует все запросы, однако мой желаемый сценарий будет не кэшировать все запросы, а те, которые я хочу кэшировать в течение определенного c времени.

Как можно Я добиваюсь этой помощи?

1 Ответ

1 голос
/ 28 марта 2020

В requests_cache есть функция для временного отключения функции кэширования. Это метод .disabled(). В следующем фрагменте я использую ключевое слово with для создания временной области, в которой запросы не кэшируются.

import requests
import requests_cache
requests_cache.install_cache('test_cache', expire_after=120)
r = requests.get('http://localhost:5000/')
print(r.content)
with requests_cache.disabled():
    r1 = requests.get('http://localhost:5000/nocach')
    print(r1.content)

Кроме того, вы можете добавить проверку, была ли она выбрана из кэша с атрибутом from_cache

r1 = requests.get('http://localhost:5000/nocach')
print( hasattr(r1, 'from_cache') )

, которая должна вернуть False, если она была помещена в disabled контекст кеш-кода

...