Bourse.Defaults (bourse v0.7.0)

Copy Markdown View Source

Centralized default configuration values for bourse.

All defaults can be overridden via application config:

config :bourse,
  recv_window_ms: 10_000,
  request_timeout_ms: 60_000

Available Defaults

Config KeyDefaultDescription
:recv_window_ms5000Request timestamp validity window (exchanges reject stale requests)
:request_timeout_ms30000HTTP request timeout
:retry_policy:safe_transientHTTP retry strategy (GET/HEAD only)
:retry_delaynilBackoff between retries; nil keeps Req's exponential default
:rate_limiter_enabledtrueEnable/disable rate limiter
:rate_limit_cleanup_interval_ms60000Interval for cleaning up old rate limit timestamps
:rate_limit_max_age_ms60000Maximum age for rate limit request timestamps

Summary

Functions

Returns the interval for cleaning up expired rate limit timestamps.

Returns the maximum age for rate limit request timestamps before removal.

Returns whether the rate limiter is enabled.

Returns the recv_window value in milliseconds.

Returns the HTTP request timeout in milliseconds.

Returns the backoff between HTTP retries.

Returns the HTTP retry policy.

Functions

rate_limit_cleanup_interval_ms()

@spec rate_limit_cleanup_interval_ms() :: pos_integer()

Returns the interval for cleaning up expired rate limit timestamps.

Default: 60000ms

rate_limit_max_age_ms()

@spec rate_limit_max_age_ms() :: pos_integer()

Returns the maximum age for rate limit request timestamps before removal.

Default: 60000ms

rate_limiter_enabled?()

@spec rate_limiter_enabled?() :: boolean()

Returns whether the rate limiter is enabled.

Default: true

recv_window_ms()

@spec recv_window_ms() :: pos_integer()

Returns the recv_window value in milliseconds.

The recv_window defines how long a signed request is valid. Exchanges reject requests with timestamps outside this window.

Default: 5000ms

request_timeout_ms()

@spec request_timeout_ms() :: pos_integer()

Returns the HTTP request timeout in milliseconds.

Maximum time to wait for a response from an exchange API.

Default: 30000ms

retry_delay()

@spec retry_delay() :: non_neg_integer() | nil

Returns the backoff between HTTP retries.

nil — the default — leaves the decision to Req, which honors a retry-after header on 429/503 and otherwise backs off exponentially. An integer overrides both with a fixed millisecond delay.

The test suite sets 0 so stub-driven retry paths exercise the same code without paying production backoff; real backoff behavior is asserted by passing :retry_delay per call.

Default: nil

retry_policy()

@spec retry_policy() :: :safe_transient | :transient | false

Returns the HTTP retry policy.

Trading Safety (CRITICAL)

Uses :safe_transient by default — only retries GET/HEAD requests. Never use :transient for trading APIs as it could duplicate orders.

Default: :safe_transient