

Solicitações-cache é um cache HTTP persistente que fornece uma maneira fácil de obter melhor desempenho com a biblioteca Python Reques.
A documentação completa do projeto pode ser encontrada no solicitações cache.readthedocs.io.
requests com a qual você já está familiarizado. Adicione o armazenamento em cache com uma substituição de drop-in para requests.Session ou instale globalmente para adicionar cache transparente a todas as funções requests .Primeiro, instale com PIP:
pip install requests-cacheEm seguida, use solicitações_cache.cachedSession para fazer suas solicitações. Ele se comporta como um pedido normal.Session, mas com comportamento de cache.
Para ilustrar, chamaremos um ponto de extremidade que adiciona um atraso de 1 segundo, simulando um site lento ou limitado por taxa.
Isso leva 1 minuto:
import requests
session = requests . Session ()
for i in range ( 60 ):
session . get ( 'https://httpbin.org/delay/1' )Isso leva 1 segundo:
import requests_cache
session = requests_cache . CachedSession ( 'demo_cache' )
for i in range ( 60 ):
session . get ( 'https://httpbin.org/delay/1' ) Com o cache, a resposta será buscada uma vez, salva para demo_cache.sqlite , e as solicitações subsequentes retornarão a resposta em cache quase instantaneamente.
Se você não deseja gerenciar um objeto de sessão, ou apenas deseja testá-lo rapidamente em seu aplicativo sem modificar nenhum código, as solicitações-cache também podem ser instaladas globalmente e todas as solicitações serão transparentes em cache:
import requests
import requests_cache
requests_cache . install_cache ( 'demo_cache' )
requests . get ( 'https://httpbin.org/delay/1' )Por padrão, as solicitações-cache manterão respostas em cache indefinidamente. Na maioria dos casos, você deseja usar uma das duas estratégias seguintes para equilibrar a frescura e o desempenho do cache:
Defina exatamente quanto tempo para manter as respostas:
Use o parâmetro expire_after para definir um tempo de expiração fixo para todas as novas respostas:
from requests_cache import CachedSession
from datetime import timedelta
# Keep responses for 360 seconds
session = CachedSession ( 'demo_cache' , expire_after = 360 )
# Or use timedelta objects to specify other units of time
session = CachedSession ( 'demo_cache' , expire_after = timedelta ( hours = 1 ))Consulte Expiração para obter mais recursos e configurações.
Use cabeçalhos de controle de cache:
Use o parâmetro cache_control para ativar a expiração automática com base no Cache-Control e em outros cabeçalhos HTTP padrão enviados pelo servidor:
from requests_cache import CachedSession
session = CachedSession ( 'demo_cache' , cache_control = True )Consulte os cabeçalhos de cache para obter mais detalhes.
As configurações padrão funcionam bem para a maioria dos casos de uso, mas existem muitas maneiras de personalizar o comportamento do cache quando necessário. Aqui está um exemplo rápido de algumas das opções disponíveis:
from datetime import timedelta
from requests_cache import CachedSession
session = CachedSession (
'demo_cache' ,
use_cache_dir = True , # Save files in the default user cache dir
cache_control = True , # Use Cache-Control response headers for expiration, if available
expire_after = timedelta ( days = 1 ), # Otherwise expire responses after one day
allowable_codes = [ 200 , 400 ], # Cache 400 responses as a solemn reminder of your failures
allowable_methods = [ 'GET' , 'POST' ], # Cache whatever HTTP methods you want
ignored_parameters = [ 'api_key' ], # Don't match this request param, and redact if from the cache
match_headers = [ 'Accept-Language' ], # Cache a different response per language
stale_if_error = True , # In case of request errors, use stale cache data if possible
)Para saber mais sobre o que você pode fazer com solicitações-cache, consulte: