我有一个与ruby脚本并行运行的rails应用程序。这是脚本是ruby-mqtt
订阅者,基本上它通过mqtt协议侦听消息,然后与rails应用程序交互。
问题是,工头与rails服务器同时启动此过程,当有广播消息且服务器尚未完成启动过程时,脚本崩溃,并且工头用它杀死服务器。
这是示例Procfile:
server: rails s -p 3000 -b 0.0.0.0
mqtt_subscriber: ruby ./mqtt/subscribers/mqtt_subscriber.rb
目前的解决方法是运行rails服务器,当它完成启动时,从另一个终端或使用屏幕启动订户。
在服务器通过foreman start完全启动后,有没有办法运行订阅者进程?
答案 0 :(得分:1)
在mqtt用户启动之前,您可以使用wait-for-it bash script等待tcp端口可用
server: rails s -p 3000 -b 0.0.0.0
mqtt_subscriber: wait-for-it.sh -t 0 localhost:3000 -- ruby ./mqtt/subscribers/mqtt_subscriber.rb