Ruby on rails Rails同时启动涉及循环的多个进程
在我的RubyonRails项目中,我有3名工人。它们位于Ruby on rails Rails同时启动涉及循环的多个进程,ruby-on-rails,ruby,shell,docker,sh,Ruby On Rails,Ruby,Shell,Docker,Sh,在我的RubyonRails项目中,我有3名工人。它们位于/lib/workers/worker_a.rb,/lib/workers/worker_b.rb,以及/lib/workers/worker_c.rb 工人A的定义如下 class WorkerA def run! logger.info "Starting worker A" loop do begin do workerAWork sleep 1.5
/lib/workers/worker_a.rb
,/lib/workers/worker_b.rb
,以及/lib/workers/worker_c.rb
工人A的定义如下
class WorkerA
def run!
logger.info "Starting worker A"
loop do
begin
do workerAWork
sleep 1.5 if workerAWork
rescue => e
logger.error e
sleep 3
end
end
end
end
WorkerA.new.run! if __FILE__==$0
工人B的定义非常相似:
class WorkerB
def run!
logger.info "Starting Worker B"
loop do
begin
do workerBWork
sleep 1.5 if workerBWork
rescue => e
logger.error e
sleep 3
end
end
end
end
WorkerA.new.run! if __FILE__==$0
Worker C的定义如上所述
所有3名员工都在做应用程序需要他们做的事情。但是,在使用Docker部署期间,我需要打开3个终端,并使用bin/rails runner./lib/workers/worker_a.rb
,bin/rails runner./lib/workers/worker_c.rb
,bin/rails runner./lib/workers/worker_c.rb
如果我创建一个shell脚本
bin/rails runner ./lib/workers/worker_a.rb
bin/rails runner ./lib/workers/worker_b.rb
bin/rails runner ./lib/workers/worker_c.rb
只有第一个工人将启动,终端将挂在那里,因为有一个循环。回路将阻止工人B和C启动
有没有一种方法可以让脚本一个接一个地启动
谢谢 要重现Sidekiq的本质似乎需要很多努力。虽然您可以使用
bin/rails runner./lib/workers/worker_a.rb&>/dev/null&disown
在后台运行命令@anothermh是正确的-为什么要重新发明轮子,而且做得不好?