Commit c520edc0 authored by Victor Stinner's avatar Victor Stinner

asyncio doc: add an client example using streams

parent 24f8ebf4
...@@ -205,3 +205,38 @@ StreamReaderProtocol ...@@ -205,3 +205,38 @@ StreamReaderProtocol
XXX XXX
Example
=======
Simple example querying HTTP headers of the URL passed on the command line::
import asyncio
import urllib.parse
import sys
@asyncio.coroutine
def print_http_headers(url):
url = urllib.parse.urlsplit(url)
reader, writer = yield from asyncio.open_connection(url.hostname, 80)
query = ('HEAD {url.path} HTTP/1.0\r\n'
'Host: {url.hostname}\r\n'
'\r\n').format(url=url)
writer.write(query.encode('latin-1'))
while True:
line = yield from reader.readline()
if not line:
break
line = line.decode('latin1').rstrip()
if line:
print('HTTP header> %s' % line)
url = sys.argv[1]
loop = asyncio.get_event_loop()
task = asyncio.async(print_http_headers(url))
loop.run_until_complete(task)
Usage::
python example.py http://example.com/path/page.html
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment