我遇到了尝试从古老版本的python-requests(0.14)切换到更新版本(1.1,1.2等)的问题。问题是我们有一个使用以下库在twitter上发布图像的系统:https://github.com/maraujop/requests-oauth
主要问题在于这行代码:
# This is taken from the documentation of the library mentioned above
session = requests.session(hooks={'pre_request': oauth_hook})
session.post(...)
由于Session构造函数不再接受hooks参数。我发现post方法接受了hooks参数,并且像这样查了代码:
session = requests.session()
session.post(..., hooks={'pre_request': oauth_hook})
这比以前更好,但是在较新版本的python-requests中不再接受pre_request(你可以在请求0.14的文档中找到这个钩子,但不能在任何新版本中找到)。有人可以为此提供帮助吗?
答案 0 :(得分:3)
您需要自己创建请求对象,将其传递给钩子,然后在其上调用.prepare()
:
import requests
request = requests.Request('POST', url, ...)
request = oauth_hook(request)
prepared = request.prepare()
然后发送:
session = requests.session()
resp = session.send(prepared)