首页 > 解决方案 > Sidekiq 的 perform_in 从未真正执行过,尽管它显示为“忙碌”

问题描述

我只是创建了一个工作人员来在后台重新启动 apache,因为在 rails 应用程序内部执行它只会冻结应用程序并引发“内部服务器错误”

我正在做一些非常简单的事情。

这是我的工人:

# app/workers/reload_apache_worker.rb
class ReloadApacheWorker
  include Sidekiq::Worker

  def perform
    `sudo /etc/init.d/apache2 graceful`
  end
end

我只是用它来称呼它ReloadApacheWorker.perform_in(5.seconds)

什么都没发生。我可以在 sidekiq Web 界面中看到它“忙”。 在此处输入图像描述

我究竟做错了什么?与我一起执行的其他 2 名工人.perform_async工作完美无瑕,所以我不确定这个是怎么回事。

标签: ruby-on-railssidekiq

解决方案


如果您在(内部)请求期间重新启动服务器,您将收到一个错误,因为它不会响应它,因此您会收到一个错误。


推荐阅读