从rake任务中启动sidekiq

3
我正在尝试通过执行rake任务来启动Sidekiq。以下是我的代码。
namespace :sidekiq do
  task start: :environment do
    system "bundle exec sidekiq -C 'Path To Config File' -P 'Path For PID File' -d -L 'Path To Log File'"
  end
end

当我使用命令

rake sidekiq:start

运行rake任务时,它会启动sidekiq,但是rake任务会一直等待Sidekiq的响应。有没有办法让我的rake任务不等待Sidekiq,或者在Sidekiq启动后自动结束?


很奇怪,它应该已经成为守护进程了。 - Sergio Tulentsev
是的,你说得对。它正在进行守护进程操作,但rake任务仍在等待响应。 - RQ Bukhari
只需在末尾添加一个 & 符号即可。 - Sergio Tulentsev
我已经尝试过那个了。结果还是一样的。 - RQ Bukhari
1个回答

1
你应该使用Foreman代替。
在你的项目中添加一个Procfile文件并加入你的Sidekiq指令(类似于以下内容):
worker: bundle exec sidekiq -C 'Path To Config File' -P 'Path For PID File' -d -L 'Path To Log File'

你可能会发现这个教程很有用: http://blog.daviddollar.org/2011/05/06/introducing-foreman.html


谢谢你的解决方案,但我已经使用守护进程修复了那个rake任务。 :) - RQ Bukhari
@RqBukhari,你能把你的解决方案写成一个独立的答案吗? - Tetiana Chupryna
@TetianaChupryna 我在我的部署脚本 (Capistrano) 中添加了启动 sidekiq 的命令。我不再使用 rake 任务了。 - RQ Bukhari
1
@TetianaChupryna 如果你需要使用rake任务来完成这个操作,那么你可以尝试这个命令:system "bundle exec sidekiq -P 'PID文件路径' -d -L '日志文件路径'" - RQ Bukhari

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接