WeaviateEx.Protocol.HTTP.Timeout (WeaviateEx v0.7.4)

View Source

Per-operation timeout calculation based on operation type.

This module extends WeaviateEx.Config.Timeout with operation-specific timeout logic, including extended timeouts for batch operations.

Operation Types

  • :query, :search, :aggregate, :get - Use query timeout (default: 30s)
  • :insert, :update, :delete, :create - Use insert timeout (default: 90s)
  • :batch - Uses insert timeout × 10 for large batch operations
  • :init - Uses init timeout for connection initialization (default: 2s)

Usage

alias WeaviateEx.Config.Timeout
alias WeaviateEx.Protocol.HTTP.Timeout, as: HTTPTimeout

config = Timeout.new(query: 30_000, insert: 90_000)

HTTPTimeout.for_operation(config, :query)   # => 30_000
HTTPTimeout.for_operation(config, :batch)   # => 900_000 (10x insert)

Summary

Functions

Returns the multiplier applied to batch operation timeouts.

Get the timeout for a specific operation type.

Categorize an operation into its timeout category.

Types

operation()

@type operation() ::
  :query
  | :search
  | :aggregate
  | :get
  | :insert
  | :update
  | :delete
  | :create
  | :batch
  | :init
  | atom()

Functions

batch_multiplier()

@spec batch_multiplier() :: pos_integer()

Returns the multiplier applied to batch operation timeouts.

Batch operations use insert_timeout × batch_multiplier to allow time for processing large numbers of objects.

Examples

HTTPTimeout.batch_multiplier()
# => 10

for_operation(config, operation)

@spec for_operation(WeaviateEx.Config.Timeout.t() | nil, operation()) :: pos_integer()

Get the timeout for a specific operation type.

Batch operations automatically get an extended timeout (insert × 10).

Examples

config = Timeout.new()

HTTPTimeout.for_operation(config, :query)
# => 30_000

HTTPTimeout.for_operation(config, :insert)
# => 90_000

HTTPTimeout.for_operation(config, :batch)
# => 900_000 (insert × 10)

operation_category(arg1)

@spec operation_category(operation()) :: :query | :insert | :batch | :init

Categorize an operation into its timeout category.

Returns one of: :query, :insert, :batch, or :init.

Examples

HTTPTimeout.operation_category(:search)
# => :query

HTTPTimeout.operation_category(:update)
# => :insert

HTTPTimeout.operation_category(:batch)
# => :batch