Class: Ollama::Policies::Timeout

Inherits:
Base
  • Object
show all
Defined in:
lib/ollama/policies/timeout.rb

Overview

Timeout policy - enforces request and connection timeouts

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(connect_timeout: 5.0, read_timeout: 60.0, write_timeout: 10.0, hooks: {}) ⇒ Timeout

Returns a new instance of Timeout.

Parameters:

  • connect_timeout (Float) (defaults to: 5.0)

    Connection timeout in seconds (default: 5.0)

  • read_timeout (Float) (defaults to: 60.0)

    Read timeout in seconds (default: 60.0)

  • write_timeout (Float) (defaults to: 10.0)

    Write timeout in seconds (default: 10.0)

  • hooks (Hash) (defaults to: {})

    Optional hooks: :on_timeout



16
17
18
19
20
21
22
23
24
25
26
27
# File 'lib/ollama/policies/timeout.rb', line 16

def initialize(
  connect_timeout: 5.0,
  read_timeout: 60.0,
  write_timeout: 10.0,
  hooks: {}
)
  super()
  @connect_timeout = connect_timeout
  @read_timeout = read_timeout
  @write_timeout = write_timeout
  @hooks = hooks
end

Instance Attribute Details

#connect_timeoutObject (readonly)

Returns the value of attribute connect_timeout.



10
11
12
# File 'lib/ollama/policies/timeout.rb', line 10

def connect_timeout
  @connect_timeout
end

#hooksObject (readonly)

Returns the value of attribute hooks.



10
11
12
# File 'lib/ollama/policies/timeout.rb', line 10

def hooks
  @hooks
end

#read_timeoutObject (readonly)

Returns the value of attribute read_timeout.



10
11
12
# File 'lib/ollama/policies/timeout.rb', line 10

def read_timeout
  @read_timeout
end

#write_timeoutObject (readonly)

Returns the value of attribute write_timeout.



10
11
12
# File 'lib/ollama/policies/timeout.rb', line 10

def write_timeout
  @write_timeout
end

Instance Method Details

#around(request, env, &block) ⇒ Object



29
30
31
32
33
34
35
36
37
38
39
40
# File 'lib/ollama/policies/timeout.rb', line 29

def around(request, env, &block)
  # Inject timeouts into request metadata
  env[:timeouts] ||= {}
  env[:timeouts][:connect] = @connect_timeout
  env[:timeouts][:read] = @read_timeout
  env[:timeouts][:write] = @write_timeout

  block.call(request, env)
rescue TimeoutError, Net::ReadTimeout, Net::OpenTimeout => e
  @hooks[:on_timeout]&.call(request, env, e)
  raise
end