Class: Conductor::Worker::WorkerConfig
- Inherits:
-
Object
- Object
- Conductor::Worker::WorkerConfig
- Defined in:
- lib/conductor/worker/worker_config.rb
Overview
Configuration resolver for workers with 3-tier hierarchy Priority (highest to lowest):
- Worker-specific env var: conductor.worker.task_name.property
- Global worker env var: conductor.worker.all.property
- Code-level default from worker definition
Constant Summary collapse
- PROPERTIES =
Configuration properties with their types and default values
{ poll_interval: { type: :integer, default: 100 }, # milliseconds thread_count: { type: :integer, default: 1 }, domain: { type: :string, default: nil }, worker_id: { type: :string, default: nil }, # auto-generated if nil poll_timeout: { type: :integer, default: 100 }, # milliseconds register_task_def: { type: :boolean, default: false }, overwrite_task_def: { type: :boolean, default: true }, strict_schema: { type: :boolean, default: false }, paused: { type: :boolean, default: false }, isolation: { type: :symbol, default: :thread }, # :thread or :ractor executor: { type: :symbol, default: :thread_pool } # :thread_pool or :fiber }.freeze
Class Method Summary collapse
-
.generate_worker_id ⇒ String
Generate a unique worker ID.
-
.resolve(worker_name, defaults = {}) ⇒ Hash
Resolve configuration for a worker.
Class Method Details
.generate_worker_id ⇒ String
Generate a unique worker ID
57 58 59 60 61 62 63 64 65 66 |
# File 'lib/conductor/worker/worker_config.rb', line 57 def generate_worker_id hostname = begin Socket.gethostname rescue StandardError 'unknown' end pid = Process.pid thread_id = Thread.current.object_id.to_s(16) "#{hostname}-#{pid}-#{thread_id}" end |
.resolve(worker_name, defaults = {}) ⇒ Hash
Resolve configuration for a worker
33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 |
# File 'lib/conductor/worker/worker_config.rb', line 33 def resolve(worker_name, defaults = {}) result = {} PROPERTIES.each do |property, config| # Try to get from environment variables (3-tier hierarchy) env_value = get_env_value(worker_name, property) result[property] = if env_value convert_value(env_value, config[:type]) elsif defaults.key?(property) defaults[property] else config[:default] end end # Auto-generate worker_id if not set result[:worker_id] ||= generate_worker_id result end |