使用request.Response(...)和参数

时间:2019-02-24 20:30:17

标签: python-requests

Runestone Book Python编程基础中有一个名为response_with_catching的组件。该代码可用here。该组件通过保存响应并在可能的情况下返回缓存的数据来防止对API的重复调用。

如果缓存的数据可用于API调用,则将执行以下代码:

return requests.Response(permanent_cache[cache_key], full_url)

此行的目的是什么?

documentation中没有明确说明如何将request.response()与参数一起使用。

例如,在一个特定的运行中,参数permanent_cachefull_url为:

permanent_cache[cache_key] = 
[{"word":"nappy","score":707,"numSyllables":2},
 {"word":"scrappy","score":702,"numSyllables":2}]

full_url = https://api.datamuse.com/words?rel_rhy=happy&max=2

执行该行时出现问题,例如运行

full_url = "https://api.datamuse.com/words?rel_rhy=happy&max=2"
x = requests.Response([{"word":"nappy","score":707,"numSyllables":2},
                       {"word":"scrappy","score":702,"numSyllables":2}], full_url)

引发错误

TypeError: __init__() takes 1 positional argument but 3 were given

1 个答案:

答案 0 :(得分:0)

在对Runestone互动书 Python编程基础中使用的行requests.response(...)引发的错误进行了进一步研究之后,事实证明这本书没有使用官方python requests模块。而是使用了受限制的版本,为response_with_catching列出的代码并不是要在完整的Python环境中使用。通过阅读代码中的注释并不能直接看出这一点。