asyncio doc: add an client example using streams
This commit is contained in:
parent
24f8ebf4c5
commit
c520edc08b
|
@ -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
|
||||
|
||||
|
|
Loading…
Reference in New Issue