Slide 1

Slide 1 text

A Deep Dive Into Requests

Slide 2

Slide 2 text

Hi

Slide 3

Slide 3 text

@lukasaoz @lukasa

Slide 4

Slide 4 text

No content

Slide 5

Slide 5 text

Requests Core Contributor urllib3 Core Contributor Maintainer of 10+ others

Slide 6

Slide 6 text

You Know This r  =  requests.get('http://www.google.com/')   print  r.content

Slide 7

Slide 7 text

Let’s Learn Something New

Slide 8

Slide 8 text

Sessions

Slide 9

Slide 9 text

Sessions • Requests’ Persistence Layer • Manage cookies • Avoid boilerplate • Connection Pooling!

Slide 10

Slide 10 text

Cookie Management >>>  import  requests   >>>  s  =  requests.Session()   >>>  s.get('http://www.google.com/')   >>>  len(s.cookies)   2

Slide 11

Slide 11 text

Avoid Boilerplate >>>  s  =  requests.Session()   >>>  s.auth  =  ('Cory',  'LOLNO')   >>>  s.get('http://some-­‐protected-­‐resource.org/')

Slide 12

Slide 12 text

Connection Pooling #  Two  TCP  Connections   >>>  requests.get('http://www.google.com/')   >>>  requests.get('http://www.google.com/')   #  Re-­‐use  the  same  TCP  connection   >>>  s  =  requests.Session()   >>>  s.get('http://www.google.com/')   >>>  s.get('http://www.google.com/')

Slide 13

Slide 13 text

Transport Adapters • Change the way requests manages connections. • Useful for applying connection- scope changes. • Think: SSL version, protocol etc.

Slide 14

Slide 14 text

Streaming #  Does  not  download  response  body   >>>  r  =  requests.get(url,  stream=True)   #  Now,  iterate  over  the  body,  in  chunks...   >>>  [x  for  x  in  r.iter_content(1024)]   #  or  lines...   >>>  [x  for  x  in  r.iter_lines()]   #  Downloads  all  at  once   >>>  r.content

Slide 15

Slide 15 text

SSL Client Certs >>>  r  =  requests.get(url,  cert=(                  'cert.crt',  ‘cert.key’          ))

Slide 16

Slide 16 text

Unusual Auth • OAuth1 and 2: requests_oauthlib • Kerberos: requests_kerberos • NTLM: requests_ntlm

Slide 17

Slide 17 text

Related Projects • requests-toolbelt: Utilities • trequests, treq, grequests, async- requests • requests-ftp • urllib3, hyper

Slide 18

Slide 18 text

Thanks! @lukasaoz @lukasa