

คำขอแคช เป็นแคช HTTP แบบถาวรที่ให้วิธีง่ายๆในการรับประสิทธิภาพที่ดีขึ้นด้วยไลบรารีคำขอ Python
เอกสารโครงการที่สมบูรณ์สามารถพบได้ที่ requests-cache.readthedocs.io
requests ที่คุณคุ้นเคยอยู่แล้ว เพิ่มการแคชด้วยการแทนที่แบบเลื่อนลงสำหรับ requests.Session หรือติดตั้งทั่วโลกเพื่อเพิ่มแคชโปร่งใสลงในฟังก์ชั่น requests ทั้งหมดก่อนอื่นติดตั้งด้วย PIP:
pip install requests-cacheจากนั้นใช้ requests_cache.cachedsession เพื่อทำคำขอของคุณ มันทำงานเหมือนคำขอปกติ sessions แต่มีพฤติกรรมการแคช
เพื่อแสดงให้เห็นว่าเราจะเรียกจุดสิ้นสุดที่เพิ่มความล่าช้า 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' )โดยค่าเริ่มต้นคำขอแคชจะเก็บคำตอบแคชไว้เรื่อย ๆ ในกรณีส่วนใหญ่คุณจะต้องใช้หนึ่งในสองกลยุทธ์ต่อไปนี้เพื่อปรับสมดุลความสดและประสิทธิภาพของแคช:
กำหนดระยะเวลาที่จะรักษาคำตอบ:
ใช้พารามิเตอร์ 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
)หากต้องการข้อมูลเพิ่มเติมเกี่ยวกับสิ่งที่คุณสามารถทำได้ด้วยคำขอแคชให้ดู: