根据请求文档,可以将事件挂钩添加到.get()函数中。

requests.get('http://httpbin.org', hooks=dict(response=print_url))
def print_url(r, *args, **kwargs):
    print(r.url)


很好,但是如何使用自定义参数设置* args,例如,我要将一些自定义值传递给print_url(),如何在* args中设置这些值?这样的事情失败了:

args = ("search_item", search_item)
rs = (grequests.get(u, hooks={'response': [parse_books],'args': [args]}) for u in urls)

最佳答案

您不能指定额外的参数传递给响应挂钩。如果您想指定其他信息,则应创建一个调用的函数,然后返回要作为钩子传递的函数,例如,

def hook_factory(*factory_args, **factory_kwargs):
    def response_hook(response, *request_args, **request_kwargs):
        # use factory_kwargs
        # etc.
        return None # or the modified response
    return response_hook

grequests.get(u, hooks={'response': [hook_factory(search_item=search_item)]})

关于python-2.7 - 如何将参数传递给python grequests中的钩子(Hook),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/25115151/

10-12 12:31
查看更多