我试图在Bluemix上使用sidekiq。我认为我走在正确的轨道上,但它并没有完全发挥作用。
我有一个Sinatra的应用程序,它使用sidekiq作业来做很多动作。我在manifest.yml
文件中设置了以下行:
command: bundle exec rackup config.ru -p $PORT && bundle exec sidekiq -r ./server.rb -c 3
我认为使用此命令会运行sidekiq,但是,当我调用创建作业的端点时,它仍然在" Queue" Sidekiq面板上的部分。
我需要采取什么行动才能让sidekiq处理这份工作?
PS:我是Bluemix的初学者。我正在尝试将我的应用从Heroku迁移到Bluemix。
答案 0 :(得分:0)
直截了当地回答这个问题"按照要求":
您的启动命令不评估第二部分,即'&&'之后的部分。如果您尝试在本地环境中启动它,结果将是相同的。服务器将启动,控制台将简单地拖尾服务器日志,而不是在技术上评估为真,直到你发送一个终止信号(所以'&&'之后的部分将永远不会运行时间)。
仅用'&'因为两者都会在同一时间运行,所以有点修复。
命令:bundle exec rackup config.ru -p $ PORT&捆绑exec sidekiq
该解决方案的不理想之处是什么?呃,可能很多东西。最大的罪犯:同时有两个进程活跃,其中只有一个预期和观察(第二个)。
发送'(bluemix)cf stop'使用此命令清单创建的应用程序实例在停用实例之前仅停止观察到的实例 - 在这种情况下,我们无法确定第一个进程通过正确发送通知或关闭连接来释放外部资源,或者其他任何内容。 / p>
你可以考虑改为:
<强> 1。第一点。 Bluemix是一个CF实现,并且使用快速manifest.yml部署,没有任何东西可以阻止您让app server和sidekiq worker在不同的实例上运行。
<强> 2。更好的外壳。
命令:sh -c&#39; command1&amp; command2&amp;等待&#39;
** 3。 TBD,可能有很多选择,但我也是初学者。 **