def raise_for_status(self): """Raises stored :class:`HTTPError` or :class:`URLError`, if occurred. """ if self.is_error: if self.status_code: raise HttpRequestException(response=self) else: raise HttpConnectionError(response=self)
async def _request(self, method, url, **params): nparams = params.copy() nparams.update(((name, getattr(self, name)) for name in self.request_parameters if name not in params)) request = HttpRequest(self, url, method, params, **nparams) pool = self.connection_pools.get(request.key) if pool is None: host, port = request.address connector = partial(self.create_connection, (host, port), ssl=request.ssl) pool = self.connection_pool(connector, pool_size=self.pool_size, loop=self._loop) self.connection_pools[request.key] = pool try: conn = await pool.connect() except BaseSSLError as e: raise SSLError(str(e), response=self) from None except ConnectionRefusedError as e: raise HttpConnectionError(str(e), response=self) from None with conn: try: response = await start_request(request, conn) headers = response.headers except AbortRequest: response = None headers = None if (not headers or not keep_alive(response.request.version, headers) or response.status_code == 101 or # if response is done stream is not relevant response.request.stream and not response.done() or self.close_connections): conn.detach() # Handle a possible redirect if response and isinstance(response.request_again, tuple): method, url, params = response.request_again response = await self._request(method, url, **params) return response