First-class interface for making HTTP requests.
| 27 | |
| 28 | |
| 29 | class ClientSession: |
| 30 | """First-class interface for making HTTP requests.""" |
| 31 | |
| 32 | _source_traceback = None |
| 33 | _connector = None |
| 34 | |
| 35 | def __init__(self, *, connector=None, loop=None, cookies=None, |
| 36 | headers=None, skip_auto_headers=None, |
| 37 | auth=None, request_class=ClientRequest, |
| 38 | response_class=ClientResponse, |
| 39 | ws_response_class=ClientWebSocketResponse, |
| 40 | version=aiohttp.HttpVersion11): |
| 41 | |
| 42 | if connector is None: |
| 43 | connector = aiohttp.TCPConnector(loop=loop) |
| 44 | loop = connector._loop # never None |
| 45 | else: |
| 46 | if loop is None: |
| 47 | loop = connector._loop # never None |
| 48 | elif connector._loop is not loop: |
| 49 | raise ValueError("loop argument must agree with connector") |
| 50 | |
| 51 | self._loop = loop |
| 52 | if loop.get_debug(): |
| 53 | self._source_traceback = traceback.extract_stack(sys._getframe(1)) |
| 54 | |
| 55 | self._cookies = http.cookies.SimpleCookie() |
| 56 | |
| 57 | # For Backward compatability with `share_cookies` connectors |
| 58 | if connector._share_cookies: |
| 59 | self._update_cookies(connector.cookies) |
| 60 | if cookies is not None: |
| 61 | self._update_cookies(cookies) |
| 62 | self._connector = connector |
| 63 | self._default_auth = auth |
| 64 | self._version = version |
| 65 | |
| 66 | # Convert to list of tuples |
| 67 | if headers: |
| 68 | headers = CIMultiDict(headers) |
| 69 | else: |
| 70 | headers = CIMultiDict() |
| 71 | self._default_headers = headers |
| 72 | if skip_auto_headers is not None: |
| 73 | self._skip_auto_headers = frozenset([upstr(i) |
| 74 | for i in skip_auto_headers]) |
| 75 | else: |
| 76 | self._skip_auto_headers = frozenset() |
| 77 | |
| 78 | self._request_class = request_class |
| 79 | self._response_class = response_class |
| 80 | self._ws_response_class = ws_response_class |
| 81 | |
| 82 | def __del__(self, _warnings=warnings): |
| 83 | if not self.closed: |
| 84 | self.close() |
| 85 | |
| 86 | _warnings.warn("Unclosed client session {!r}".format(self), |
no outgoing calls