Home / Function/ send() — requests Function Reference

send() — requests Function Reference

Architecture documentation for the send() function in adapters.py from the requests codebase.

Function python CoreAPI VerbHandlers calls 6 called by 3

Entity Profile

Dependency Diagram

graph TD
  66fc1563_b020_b369_a505_bc9abe7cf66d["send()"]
  5fdf5d52_8295_768a_e20f_c6cefb721b91["HTTPAdapter"]
  66fc1563_b020_b369_a505_bc9abe7cf66d -->|defined in| 5fdf5d52_8295_768a_e20f_c6cefb721b91
  8afca6fd_1e23_31a7_341a_2a812103180b["send()"]
  8afca6fd_1e23_31a7_341a_2a812103180b -->|calls| 66fc1563_b020_b369_a505_bc9abe7cf66d
  d00652e5_18d7_14ca_83b8_481002b86341["add_headers()"]
  d00652e5_18d7_14ca_83b8_481002b86341 -->|calls| 66fc1563_b020_b369_a505_bc9abe7cf66d
  22824d7d_af0c_f593_6513_06ba28a4fc56["send()"]
  22824d7d_af0c_f593_6513_06ba28a4fc56 -->|calls| 66fc1563_b020_b369_a505_bc9abe7cf66d
  b63a634d_66d8_29cd_773b_da0e87ccd411["get_connection_with_tls_context()"]
  66fc1563_b020_b369_a505_bc9abe7cf66d -->|calls| b63a634d_66d8_29cd_773b_da0e87ccd411
  f3317fc3_a2fa_ce2a_bb1a_4f53b0443c40["cert_verify()"]
  66fc1563_b020_b369_a505_bc9abe7cf66d -->|calls| f3317fc3_a2fa_ce2a_bb1a_4f53b0443c40
  19bcbaca_551c_4599_bbfe_015fc1d38ffa["request_url()"]
  66fc1563_b020_b369_a505_bc9abe7cf66d -->|calls| 19bcbaca_551c_4599_bbfe_015fc1d38ffa
  d00652e5_18d7_14ca_83b8_481002b86341["add_headers()"]
  66fc1563_b020_b369_a505_bc9abe7cf66d -->|calls| d00652e5_18d7_14ca_83b8_481002b86341
  7086c4f7_aa89_192d_ccbb_8bfa981ed237["build_response()"]
  66fc1563_b020_b369_a505_bc9abe7cf66d -->|calls| 7086c4f7_aa89_192d_ccbb_8bfa981ed237
  8afca6fd_1e23_31a7_341a_2a812103180b["send()"]
  66fc1563_b020_b369_a505_bc9abe7cf66d -->|calls| 8afca6fd_1e23_31a7_341a_2a812103180b
  style 66fc1563_b020_b369_a505_bc9abe7cf66d fill:#6366f1,stroke:#818cf8,color:#fff

Relationship Graph

Source Code

src/requests/adapters.py lines 592–698

    def send(
        self, request, stream=False, timeout=None, verify=True, cert=None, proxies=None
    ):
        """Sends PreparedRequest object. Returns Response object.

        :param request: The :class:`PreparedRequest <PreparedRequest>` being sent.
        :param stream: (optional) Whether to stream the request content.
        :param timeout: (optional) How long to wait for the server to send
            data before giving up, as a float, or a :ref:`(connect timeout,
            read timeout) <timeouts>` tuple.
        :type timeout: float or tuple or urllib3 Timeout object
        :param verify: (optional) Either a boolean, in which case it controls whether
            we verify the server's TLS certificate, or a string, in which case it
            must be a path to a CA bundle to use
        :param cert: (optional) Any user-provided SSL certificate to be trusted.
        :param proxies: (optional) The proxies dictionary to apply to the request.
        :rtype: requests.Response
        """

        try:
            conn = self.get_connection_with_tls_context(
                request, verify, proxies=proxies, cert=cert
            )
        except LocationValueError as e:
            raise InvalidURL(e, request=request)

        self.cert_verify(conn, request.url, verify, cert)
        url = self.request_url(request, proxies)
        self.add_headers(
            request,
            stream=stream,
            timeout=timeout,
            verify=verify,
            cert=cert,
            proxies=proxies,
        )

        chunked = not (request.body is None or "Content-Length" in request.headers)

        if isinstance(timeout, tuple):
            try:
                connect, read = timeout
                timeout = TimeoutSauce(connect=connect, read=read)
            except ValueError:
                raise ValueError(
                    f"Invalid timeout {timeout}. Pass a (connect, read) timeout tuple, "
                    f"or a single float to set both timeouts to the same value."
                )
        elif isinstance(timeout, TimeoutSauce):
            pass
        else:
            timeout = TimeoutSauce(connect=timeout, read=timeout)

        try:
            resp = conn.urlopen(
                method=request.method,
                url=url,
                body=request.body,
                headers=request.headers,
                redirect=False,
                assert_same_host=False,
                preload_content=False,
                decode_content=False,
                retries=self.max_retries,
                timeout=timeout,
                chunked=chunked,
            )

        except (ProtocolError, OSError) as err:
            raise ConnectionError(err, request=request)

        except MaxRetryError as e:
            if isinstance(e.reason, ConnectTimeoutError):
                # TODO: Remove this in 3.0.0: see #2811
                if not isinstance(e.reason, NewConnectionError):
                    raise ConnectTimeout(e, request=request)

            if isinstance(e.reason, ResponseError):
                raise RetryError(e, request=request)

            if isinstance(e.reason, _ProxyError):

Domain

Subdomains

Frequently Asked Questions

What does send() do?
send() is a function in the requests codebase, defined in src/requests/adapters.py.
Where is send() defined?
send() is defined in src/requests/adapters.py at line 592.
What does send() call?
send() calls 6 function(s): add_headers, build_response, cert_verify, get_connection_with_tls_context, request_url, send.
What calls send()?
send() is called by 3 function(s): add_headers, send, send.

Analyze Your Own Codebase

Get architecture documentation, dependency graphs, and domain analysis for your codebase in minutes.

Try Supermodel Free