In [5]:
"""
$ pip install requests
"""
import requests
from IPython.core.display import display, HTML, Image
In [1]:
import sys
sys.version_info
Out[1]:
In [2]:
requests.get('http://noisebridge.net')
Out[2]:
In [3]:
requests.get('http://noisebridge.net').text
Out[3]:
In [7]:
requests.post('https://api.github.com/markdown', json={
'text': 'what a *bold* statement',
}).text
Out[7]:
In [8]:
response = requests.get('https://api.github.com/emojis')
data = response.json()
html = requests.post('https://api.github.com/markdown', json={
"text": " ".join("{0} is :{0}:".format(k) for k in data.keys())[:500],
}).text
display(HTML(html))
In [9]:
requests.post('https://api.postmarkapp.com/email',
headers={
'X-Postmark-Server-Token': os.environ['POSTMARK_API_TOKEN']
},
json={
'From': 'razzi@abuissa.net',
'To': 'razzi53@gmail.com',
'Subject': 'here are some emoji',
'HtmlBody': html
}
)
Out[9]:
In [11]:
import asyncio
import aiohttp
loop = asyncio.get_event_loop()
loop
Out[11]:
In [27]:
async def main(session):
response = await session.get('http://python.org')
status = response.status
print(status)
content = await response.read()
print(content)
loop = asyncio.get_event_loop()
with aiohttp.ClientSession(loop=loop) as session:
loop.run_until_complete(main(session))
In [16]:
import sys
sys.version_info
Out[16]:
In [45]:
# Asyncio version of 5 concurrent requests
import asyncio
import aiohttp
import time
async def main(session):
start_time = time.time()
requests = [
session.get('http://placehold.it/350x{}'
.format(i * 10))
for i in range(10, 15)
]
responses = await asyncio.gather(*requests)
images = await asyncio.gather(*[
resp.read()
for resp in responses
])
print('Total time: {}'.format(time.time() - start_time))
for image in images:
display(Image(image))
loop = asyncio.get_event_loop()
with aiohttp.ClientSession(loop=loop) as session:
loop.run_until_complete(main(session))
In [46]:
# Synchronous 5 requests: about 5x slower
def main():
start_time = time.time()
urls = [
'http://placehold.it/350x{}'
.format(i * 10)
for i in range(10, 15)
]
images = [
requests.get(url).content
for url in urls
]
print('Total time: {}'.format(time.time() - start_time))
for image in images:
display(Image(image))
main()
In [ ]:
# Other useful links
"""
Python HTTP library docs:
http://python-requests.org/
http://aiohttp.readthedocs.io/
Other:
httpbin.org: debug your http requests
httpie: quickly interact with an http api
"""