Module: Falcon::Limiter::Environment
- Defined in:
- lib/falcon/limiter/environment.rb
Overview
A flat environment module for falcon-limiter services.
Provides simple, declarative configuration for concurrency limiting. Override these methods in your service to customize behavior.
Instance Method Summary collapse
- #connection_limiter ⇒ Object
- #endpoint ⇒ Object
- #limiter_maximum_connections ⇒ Object
-
#limiter_maximum_long_tasks ⇒ Object
Maximum number of concurrent long tasks (default: 10).
- #limiter_middleware(middleware) ⇒ Object
- #limiter_middleware_class ⇒ Object
- #limiter_start_delay ⇒ Object
- #limiter_utilization ⇒ Object
- #limiter_wrapper ⇒ Object
- #middleware ⇒ Object
Instance Method Details
#connection_limiter ⇒ Object
42 43 44 45 46 47 48 |
# File 'lib/falcon/limiter/environment.rb', line 42 def connection_limiter # Create priority queue and pre-populate with tokens: queue = Async::PriorityQueue.new limiter_maximum_connections.times{queue.push(true)} Async::Limiter::Queued.new(queue, utilization: limiter_utilization.namespace(:socket_accept)) end |
#endpoint ⇒ Object
82 83 84 |
# File 'lib/falcon/limiter/environment.rb', line 82 def endpoint super.with(wrapper: limiter_wrapper) end |
#limiter_maximum_connections ⇒ Object
27 28 29 |
# File 'lib/falcon/limiter/environment.rb', line 27 def limiter_maximum_connections 1 end |
#limiter_maximum_long_tasks ⇒ Object
Maximum number of concurrent long tasks (default: 10). If this is nil or non-positive, long task support will be disabled.
22 23 24 |
# File 'lib/falcon/limiter/environment.rb', line 22 def limiter_maximum_long_tasks 10 end |
#limiter_middleware(middleware) ⇒ Object
56 57 58 59 60 61 62 63 64 65 66 67 68 69 |
# File 'lib/falcon/limiter/environment.rb', line 56 def limiter_middleware(middleware) # Create middleware with long task support if enabled: if limiter_maximum_long_tasks&.positive? limiter_middleware_class.new( middleware, connection_limiter: connection_limiter, maximum_long_tasks: limiter_maximum_long_tasks, start_delay: limiter_start_delay, utilization: limiter_utilization ) else middleware end end |
#limiter_middleware_class ⇒ Object
51 52 53 |
# File 'lib/falcon/limiter/environment.rb', line 51 def limiter_middleware_class Middleware end |
#limiter_start_delay ⇒ Object
32 33 34 |
# File 'lib/falcon/limiter/environment.rb', line 32 def limiter_start_delay 0.1 end |
#limiter_utilization ⇒ Object
37 38 39 |
# File 'lib/falcon/limiter/environment.rb', line 37 def limiter_utilization @limiter_utilization ||= Async::Utilization::Registry.new end |
#limiter_wrapper ⇒ Object
77 78 79 |
# File 'lib/falcon/limiter/environment.rb', line 77 def limiter_wrapper Wrapper.new(connection_limiter) end |
#middleware ⇒ Object
72 73 74 |
# File 'lib/falcon/limiter/environment.rb', line 72 def middleware limiter_middleware(super) end |