Method: Cuboid::Processes::Schedulers#spawn
- Defined in:
- lib/cuboid/processes/schedulers.rb
#spawn(options = {}) ⇒ RPC::Client::Queue
Spawns a RPC::Server::Scheduler process.
54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 |
# File 'lib/cuboid/processes/schedulers.rb', line 54 def spawn( = {} ) = .dup fork = .delete(:fork) daemonize = .delete(:daemonize) [:ssl] ||= { server: {}, client: {} } = { agent: { url: [:agent], strategy: [:strategy] }, rpc: { server_port: [:port] || Utilities.available_port, server_address: [:address] || '127.0.0.1', server_external_address: [:external_address], ssl_ca: [:ssl][:ca], server_ssl_private_key: [:ssl][:server][:private_key], server_ssl_certificate: [:ssl][:server][:certificate], client_ssl_private_key: [:ssl][:client][:private_key], client_ssl_certificate: [:ssl][:client][:certificate], }, paths: { application: [:application] || Options.paths.application } } pid = Manager.spawn( :scheduler, options: , fork: fork, daemonize: daemonize ) url = "#{[:rpc][:server_address]}:#{[:rpc][:server_port]}" while sleep( 0.1 ) begin connect( url, connection_pool_size: 1, max_retries: 1 ).alive? break rescue => e # ap e end end @list << url connect( url, fresh: true ).tap { |c| c.pid = pid } end |