asyncio doc: add an client example using streams

This commit is contained in:
Victor Stinner 2014-01-23 11:25:48 +01:00
parent 24f8ebf4c5
commit c520edc08b
1 changed files with 35 additions and 0 deletions

View File

@ -205,3 +205,38 @@ StreamReaderProtocol
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