WeaviateEx.Protocol.HTTP.Timeout (WeaviateEx v0.7.4)
View SourcePer-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
@type operation() :: :query | :search | :aggregate | :get | :insert | :update | :delete | :create | :batch | :init | atom()
Functions
@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
@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)
@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