首页 > 解决方案 > 在部署新版本的 Sinatra 应用程序时停止特定作业

问题描述

我在 Sinatra 应用程序(带有 NGINX 的 Phusion 乘客)中运行了一个 rufus-scheduler 作业。在app.rb我的底部有:

  scheduler.every '5m' do
    do_something_cool
  end

它得到的工作运行。但是当我使用 Capistrano 用新版本更新应用程序时,我注意到旧作业仍然存在,并且每个作业都以 5 分钟的间隔运行。

如何确保关闭旧的 rufus-scheduler 作业并启动新的作业?

我试过在底部添加这个:

at_exit do
  if scheduler
    scheduler.shutdown
  end
end

但这没有用。

标签: rubysinatrarufus-scheduler

解决方案


我不熟悉rufus-scheduler,但正如我在文档中所读到的,它只是使用线程进行调度。所以你只需要确保你的旧进程已经关闭。


推荐阅读