Coder Social home page Coder Social logo

Comments (3)

ross avatar ross commented on July 19, 2024

Like most other functionality requests_futures hooks are straight pass throughs of the underlying requests library https://docs.python-requests.org/en/latest/user/advanced/#event-hooks

Probably the easiest way to tie data to a specific request is to use an inline function:

#!/usr/bin/env python

from pprint import pprint
import requests

def get(url, params, hook_arg):

    def hook(response, *args, **kwargs):
        pprint({
            'hook_arg': hook_arg,
            'request': response.request,
            'response': response,
            'json': response.json(),
            'args': args,
            'kwargs': kwargs,
        })

    requests.get(url, params=params, hooks={'response': [hook]})

get('https://nghttp2.org/httpbin/get', {'call': 'first'}, 42)
get('https://nghttp2.org/httpbin/get', {'call': 'second'}, 43)
$ ./args.py
{'args': (),
 'hook_arg': 42,
 'json': {'args': {'call': 'first'},
          'headers': {'Accept': '*/*',
                      'Accept-Encoding': 'gzip, deflate',
                      'Host': 'nghttp2.org',
                      'User-Agent': 'python-requests/2.26.0'},
          'origin': 'xx.xx.xx.xx',
          'url': 'https://nghttp2.org/httpbin/get?call=first'},
 'kwargs': {'cert': None,
            'proxies': OrderedDict(),
            'stream': False,
            'timeout': None,
            'verify': True},
 'request': <PreparedRequest [GET]>,
 'response': <Response [200]>}
{'args': (),
 'hook_arg': 43,
 'json': {'args': {'call': 'second'},
          'headers': {'Accept': '*/*',
                      'Accept-Encoding': 'gzip, deflate',
                      'Host': 'nghttp2.org',
                      'User-Agent': 'python-requests/2.26.0'},
          'origin': 'xx.xx.xx.xx',
          'url': 'https://nghttp2.org/httpbin/get?call=second'},
 'kwargs': {'cert': None,
            'proxies': OrderedDict(),
            'stream': False,
            'timeout': None,
            'verify': True},
 'request': <PreparedRequest [GET]>,
 'response': <Response [200]>}

You also have full access to the request object so anything associated with it will be accessible.

from requests-futures.

842Mono avatar 842Mono commented on July 19, 2024

Okay thank you. I used a closure. Not sure what's the use of params=params here. I thought that this is how I could pass parameters.

from requests-futures.

ross avatar ross commented on July 19, 2024

Not sure what's the use of params=params here.

It was just to pass different params into the get so that they'd show up in the httpbin output.

from requests-futures.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.