

Requests-Cacheは、 Python Requests Libraryでパフォーマンスを向上させる簡単な方法を提供する永続的なHTTPキャッシュです。
完全なプロジェクトのドキュメントは、requests-cache.readthedocs.ioで見つけることができます。
requestsライブラリを使用し続けてください。 requests.Sessionためにドロップイン交換でキャッシュを追加するか、グローバルにインストールして、すべてのrequests関数に透明なキャッシュを追加します。まず、PIPでインストールします。
pip install requests-cache次に、requests_cache.cachedsessionを使用してリクエストを行います。それは通常の要求のように動作します。
説明するために、遅延またはレートに制限されたWebサイトをシミュレートする1秒の遅延を追加するエンドポイントを呼び出します。
これには1分かかります:
import requests
session = requests . Session ()
for i in range ( 60 ):
session . get ( 'https://httpbin.org/delay/1' )これには1秒かかります:
import requests_cache
session = requests_cache . CachedSession ( 'demo_cache' )
for i in range ( 60 ):
session . get ( 'https://httpbin.org/delay/1' )キャッシュを使用すると、応答は一度フェッチされ、 demo_cache.sqliteに保存され、その後のリクエストはキャッシュされた応答をほぼ最初に返します。
セッションオブジェクトを管理したくない場合、またはコードを変更せずにアプリケーションで迅速にテストしたい場合は、リクエストキャッシュをグローバルにインストールすることもでき、すべてのリクエストは透過的にキャッシュされます。
import requests
import requests_cache
requests_cache . install_cache ( 'demo_cache' )
requests . get ( 'https://httpbin.org/delay/1' )デフォルトでは、要求キャッシュはキャッシュされた応答を無期限に保持します。ほとんどの場合、キャッシュの新鮮さとパフォーマンスのバランスをとるために、次の2つの戦略のいずれかを使用することをお勧めします。
応答を維持する期間を正確に定義します。
expire_afterパラメーターを使用して、すべての新しい応答の固定有効期限を設定します。
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 ))その他の機能と設定については、有効期限を参照してください。
キャッシュコントロールヘッダーを使用します。
cache_controlパラメーターを使用してCache-Controlおよびサーバーが送信したその他の標準HTTPヘッダーに基づいて自動有効期限を有効にします。
from requests_cache import CachedSession
session = CachedSession ( 'demo_cache' , cache_control = True )詳細については、キャッシュヘッダーを参照してください。
デフォルトの設定はほとんどのユースケースではうまく機能しますが、必要に応じてキャッシュ動作をカスタマイズする方法はたくさんあります。利用可能なオプションのいくつかの簡単な例を次に示します。
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
)リクエストキャッシュでできることの詳細については、次を参照してください。