

Permintaan-cache adalah cache HTTP persisten yang menyediakan cara mudah untuk mendapatkan kinerja yang lebih baik dengan pustaka permintaan Python.
Dokumentasi proyek lengkap dapat ditemukan di permintaan-cache.readthedocs.io.
requests yang sudah Anda kenal. Tambahkan caching dengan penggantian drop-in untuk requests.Session , atau instal secara global untuk menambahkan caching transparan ke semua fungsi requests .Pertama, pasang dengan PIP:
pip install requests-cacheKemudian, gunakan requests_cache.cachedsession untuk membuat permintaan Anda. Itu berperilaku seperti permintaan normal. Sesi, tetapi dengan perilaku caching.
Sebagai ilustrasi, kami akan memanggil titik akhir yang menambahkan penundaan 1 detik, mensimulasikan situs web yang lambat atau terbatas.
Ini membutuhkan 1 menit:
import requests
session = requests . Session ()
for i in range ( 60 ):
session . get ( 'https://httpbin.org/delay/1' )Ini membutuhkan 1 detik:
import requests_cache
session = requests_cache . CachedSession ( 'demo_cache' )
for i in range ( 60 ):
session . get ( 'https://httpbin.org/delay/1' ) Dengan caching, respons akan diambil sekali, disimpan ke demo_cache.sqlite , dan permintaan selanjutnya akan mengembalikan respons yang di-cache secara dekat.
Jika Anda tidak ingin mengelola objek sesi, atau hanya ingin mengujinya dengan cepat di aplikasi Anda tanpa memodifikasi kode apa pun, permintaan-cache juga dapat diinstal secara global, dan semua permintaan akan di-cache secara transparan:
import requests
import requests_cache
requests_cache . install_cache ( 'demo_cache' )
requests . get ( 'https://httpbin.org/delay/1' )Secara default, permintaan-cache akan menjaga tanggapan yang di-cache tanpa batas. Dalam kebanyakan kasus, Anda ingin menggunakan salah satu dari dua strategi berikut untuk menyeimbangkan kesegaran dan kinerja cache:
Tentukan dengan tepat berapa lama untuk menjaga tanggapan:
Gunakan parameter expire_after untuk mengatur waktu kedaluwarsa tetap untuk semua tanggapan baru:
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 ))Lihat kedaluwarsa untuk lebih banyak fitur dan pengaturan.
Gunakan header kontrol cache:
Gunakan parameter cache_control untuk mengaktifkan kedaluwarsa otomatis berdasarkan Cache-Control dan header HTTP standar lainnya yang dikirim oleh server:
from requests_cache import CachedSession
session = CachedSession ( 'demo_cache' , cache_control = True )Lihat header cache untuk lebih jelasnya.
Pengaturan default bekerja dengan baik untuk sebagian besar kasus penggunaan, tetapi ada banyak cara untuk menyesuaikan perilaku caching saat dibutuhkan. Berikut adalah contoh cepat dari beberapa opsi yang tersedia:
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
)Untuk mengetahui lebih lanjut tentang apa yang dapat Anda lakukan dengan permintaan-cache, lihat: