def set_default_timeout(timeout=None, connect_timeout=None, read_timeout=None):
    """
    The purpose of this function is to install default socket timeouts that
    different than those used by boto3 and botocore. Clients obtained from the
    `fleece.boto3.client()` function will have these timeouts set, unless
    explicitly overriden.

    The default timeouts set through this option apply to the entire process.
    For that reason, it is recommended that this function is only called once
    during startup, and from the main thread, before any other threads are
    spawned.

    Socket timeouts are automatically retried by boto, according to its own
    retry policies.

    :param timeout timeout for socket connections and reads in seconds. This is
                   a convenience argument that applies the same default to both
                   connection and read timeouts.
    :param connect_timeout timeout for socket connections in seconds.
    :param read_timeout timeout for socket reads in seconds.
    """
    global DEFAULT_TIMEOUT
    global DEFAULT_CONNECT_TIMEOUT
    global DEFAULT_READ_TIMEOUT
    DEFAULT_TIMEOUT = timeout
    DEFAULT_CONNECT_TIMEOUT = connect_timeout
    DEFAULT_READ_TIMEOUT = read_timeout
