mirror of
https://github.com/python/cpython.git
synced 2025-11-11 14:44:57 +00:00
asyncio doc: add an client example using streams
This commit is contained in:
parent
24f8ebf4c5
commit
c520edc08b
1 changed files with 35 additions and 0 deletions
|
|
@ -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
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue