diff options
author | Guido van Rossum <guido@python.org> | 2013-11-01 10:23:23 -0700 |
---|---|---|
committer | Guido van Rossum <guido@python.org> | 2013-11-01 10:23:23 -0700 |
commit | 2205d8d2c68136450f64bd6af95536c89497e067 (patch) | |
tree | 193a17613f887ee3c459e0da86746dea93a6e79e /examples | |
parent | 7c932a847286c0eaa5812d01a12b32a9c824faea (diff) | |
download | trollius-2205d8d2c68136450f64bd6af95536c89497e067.tar.gz |
Add pool-closing to fetch3 example.
Diffstat (limited to 'examples')
-rw-r--r-- | examples/fetch3.py | 31 |
1 files changed, 19 insertions, 12 deletions
diff --git a/examples/fetch3.py b/examples/fetch3.py index fac880f..fa9ebb0 100644 --- a/examples/fetch3.py +++ b/examples/fetch3.py @@ -18,6 +18,10 @@ class ConnectionPool: self.verbose = verbose self.connections = {} # {(host, port, ssl): (reader, writer)} + def close(self): + for _, writer in self.connections.values(): + writer.close() + @coroutine def open_connection(self, host, port, ssl): port = port or (443 if ssl else 80) @@ -187,18 +191,21 @@ class Response: @coroutine def fetch(url, verbose=True, max_redirect=10): pool = ConnectionPool(verbose) - for _ in range(max_redirect): - request = Request(url, verbose) - yield from request.connect(pool) - yield from request.send_request() - response = yield from request.get_response() - body = yield from response.read() - next_url = response.get_redirect_url() - if not next_url: - break - url = urllib.parse.urljoin(url, next_url) - print('redirect to', url, file=sys.stderr) - return body + try: + for _ in range(max_redirect): + request = Request(url, verbose) + yield from request.connect(pool) + yield from request.send_request() + response = yield from request.get_response() + body = yield from response.read() + next_url = response.get_redirect_url() + if not next_url: + break + url = urllib.parse.urljoin(url, next_url) + print('redirect to', url, file=sys.stderr) + return body + finally: + pool.close() def main(): |