

طلبات CACKES هي ذاكرة التخزين المؤقت HTTP المستمرة التي توفر طريقة سهلة للحصول على أداء أفضل مع مكتبة طلبات Python.
يمكن الاطلاع على وثائق المشروع الكاملة في طلبات CACHE.READTHEDOCS.IO.
requests التي تعرفها بالفعل. أضف التخزين المؤقت مع بديل requests.Session requestsأولاً ، التثبيت مع PIP:
pip install requests-cacheثم ، استخدم requests_cache.cachedsession لتقديم طلباتك. إنه يتصرف مثل الطلبات العادية ، ولكن مع سلوك التخزين المؤقت.
لتوضيح ، سنقوم باستدعاء نقطة نهاية تضيف تأخيرًا قدره ثانية واحدة ، أو محاكاة موقع ويب بطيء أو محدود المعدل.
هذا يستغرق دقيقة واحدة:
import requests
session = requests . Session ()
for i in range ( 60 ):
session . get ( 'https://httpbin.org/delay/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 ، وستعود الطلبات اللاحقة إلى الاستجابة المخزنة مؤقتًا بالقرب من ذلك.
إذا كنت لا ترغب في إدارة كائن جلسة ، أو ترغب فقط في اختباره بسرعة في التطبيق الخاص بك دون تعديل أي رمز ، يمكن أيضًا تثبيت Crafts Clim على مستوى العالم ، وسيتم تخزين جميع الطلبات بشفافية:
import requests
import requests_cache
requests_cache . install_cache ( 'demo_cache' )
requests . get ( 'https://httpbin.org/delay/1' )افتراضيًا ، ستبقي طلبات CATHS CACHES الاستجابات المخزنة مؤقتًا إلى أجل غير مسمى. في معظم الحالات ، سترغب في استخدام إحدى الاستراتيجيتين التاليتين لموازنة نضارة ذاكرة التخزين المؤقت والأداء:
حدد بالضبط المدة التي يتمتع بها الاحتفاظ بالاستجابات:
استخدم معلمة 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
)لمعرفة المزيد حول ما يمكنك القيام به مع الطلبات ، راجع: