Skip to content

Configuration

obstore.store.ClientConfig

Bases: TypedDict

HTTP client configuration

For timeout values (connect_timeout, http2_keep_alive_timeout, pool_idle_timeout, and timeout), values can either be Python timedelta objects, or they can be "human-readable duration strings".

The human-readable duration string is a concatenation of time spans. Where each time span is an integer number and a suffix. Supported suffixes:

  • nsec, ns -- nanoseconds
  • usec, us -- microseconds
  • msec, ms -- milliseconds
  • seconds, second, sec, s
  • minutes, minute, min, m
  • hours, hour, hr, h
  • days, day, d
  • weeks, week, w
  • months, month, M -- defined as 30.44 days
  • years, year, y -- defined as 365.25 days

For example:

  • "2h 37min"
  • "32ms"

allow_http instance-attribute

allow_http: bool

Allow non-TLS, i.e. non-HTTPS connections.

allow_invalid_certificates instance-attribute

allow_invalid_certificates: bool

Skip certificate validation on https connections.

Warning

You should think very carefully before using this method. If invalid certificates are trusted, any certificate for any site will be trusted for use. This includes expired certificates. This introduces significant vulnerabilities, and should only be used as a last resort or for testing

connect_timeout instance-attribute

connect_timeout: str | timedelta

Timeout for only the connect phase of a Client

default_content_type instance-attribute

default_content_type: str

default CONTENT_TYPE for uploads

http1_only instance-attribute

http1_only: bool

Only use http1 connections.

http2_keep_alive_interval instance-attribute

http2_keep_alive_interval: str

Interval for HTTP2 Ping frames should be sent to keep a connection alive.

http2_keep_alive_timeout instance-attribute

http2_keep_alive_timeout: str | timedelta

Timeout for receiving an acknowledgement of the keep-alive ping.

http2_keep_alive_while_idle instance-attribute

http2_keep_alive_while_idle: str

Enable HTTP2 keep alive pings for idle connections

http2_only instance-attribute

http2_only: bool

Only use http2 connections

pool_idle_timeout instance-attribute

pool_idle_timeout: str | timedelta

The pool max idle timeout.

This is the length of time an idle connection will be kept alive.

pool_max_idle_per_host instance-attribute

pool_max_idle_per_host: str

Maximum number of idle connections per host.

proxy_url instance-attribute

proxy_url: str

HTTP proxy to use for requests.

timeout instance-attribute

timeout: str | timedelta

Request timeout.

The timeout is applied from when the request starts connecting until the response body has finished.

user_agent instance-attribute

user_agent: str

User-Agent header to be used by this client.

obstore.store.BackoffConfig

Bases: TypedDict

Exponential backoff with jitter

See aws.amazon.com/blogs/architecture/exponential-backoff-and-jitter/

base instance-attribute

base: int | float

The base of the exponential to use

init_backoff instance-attribute

init_backoff: timedelta

The initial backoff duration

max_backoff instance-attribute

max_backoff: timedelta

The maximum backoff duration

obstore.store.RetryConfig

Bases: TypedDict

The configuration for how to respond to request errors

The following categories of error will be retried:

  • 5xx server errors
  • Connection errors
  • Dropped connections
  • Timeouts for safe / read-only requests

Requests will be retried up to some limit, using exponential backoff with jitter. See BackoffConfig for more information

backoff instance-attribute

backoff: BackoffConfig

The backoff configuration

max_retries instance-attribute

max_retries: int

The maximum number of times to retry a request

Set to 0 to disable retries

retry_timeout instance-attribute

retry_timeout: timedelta

The maximum length of time from the initial request after which no further retries will be attempted

This not only bounds the length of time before a server error will be surfaced to the application, but also bounds the length of time a request's credentials must remain valid.

As requests are retried without renewing credentials or regenerating request payloads, this number should be kept below 5 minutes to avoid errors due to expired credentials and/or request payloads