【发布时间】:2021-11-30 17:43:33
【问题描述】:
我的缓存过滤器有问题。
这个想法是不缓存包含"incomplete_result":true的响应
这是我的过滤功能:
import requests
import requests_cache
def phrase_filter(response: requests.models.Response)->bool:
if '"incomplete_results":true' in response.text:
return False
return True
但是当我用这段代码测试它时:
requests_cache.install_cache('demo_cache',expired_after=600,filter_fn=phrase_filter)
requests_cache.clear()
url1 = 'https://raw.githubusercontent.com/KienTrann/requests-cache-testing/main/should_be_cached.txt'
url2 = 'https://raw.githubusercontent.com/KienTrann/requests-cache-testing/main/should_not_be_cached.txt'
with requests_cache.enabled():
r = requests.get(url1) # First request
r = requests.get(url1) # Second request
print(f'Text from url1:\n{r.text}')
assert r.from_cache==True
#
r1 = requests.get(url2) # First request
r1 = requests.get(url2) # Second request
print('---')
print(f'Text from url2:\n{r1.text}')
assert r1.from_cache==False
requests_cache.disabled()
结果如下:
Text from url1:
abc
xyz
"incomplete_results":false
---
Text from url2:
abc
xyz
"incomplete_results":true
Traceback (most recent call last):
File "C:\Users\ADMIN\source\repos\LearningPython\py_2\py_2.py", line 25, in <module>
assert r1.from_cache==False
AssertionError
我不明白为什么 r1 被缓存了。
有什么问题?我该如何解决?
感谢您花时间回答
【问题讨论】:
标签: python caching browser-cache