Python请求库pre_request钩子

时间:2013-04-02 13:20:28

标签: python python-requests

我遇到了尝试从古老版本的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的文档中找到这个钩子,但不能在任何新版本中找到)。有人可以为此提供帮助吗?

1 个答案:

答案 0 :(得分:3)

您需要自己创建请求对象,将其传递给钩子,然后在其上调用.prepare()

import requests

request = requests.Request('POST', url, ...)
request = oauth_hook(request)
prepared = request.prepare()

然后发送:

session = requests.session()
resp = session.send(prepared)