Sidekiq不创建PID文件

时间:2013-01-16 11:52:44

标签: ruby config pid sidekiq

为了阻止Sidekiq,我需要使用:

$bundle exec sidekiqctl stop /Users/me/Documents/sites/some_site/tmp/pid/sidekiq.pid 20

我告诉Sidekiq在config.yml文件中创建一个pid文件:

#/Users/me/Documents/sites/some_site/config.yml
:pidfile: /Users/me/Documents/sites/some_site/tmp/pids/sidekiq.pid
:concurrency: 25

告诉Sidekiq这个配置文件使用的位置:

$ bundle exec sidekiq -C /Users/me/Documents/sites/some_site/config.yml

然而,当我运行Sidekiq时,它不会创建.pid文件,因此我无法阻止它。那么为什么不创建.pid文件呢?

2 个答案:

答案 0 :(得分:7)

尝试用以下方法替换该绝对路径:

:pidfile: ./tmp/pids/sidekiq.pid

其次,确保将运行sidekiq的用户具有写入该目录的正确写入权限。你可以暂时chmod 777进行测试,看看权限是否是问题。

以下是Sidekiq的配置yml文件示例。确保您也指定了一个队列。 https://github.com/mperham/sidekiq/blob/master/examples/config.yml

答案 1 :(得分:5)

要使用pid文件,您应该启动sidekiq作为守护程序。当您在rails根目录上使用此命令启动sidekiq时:

bundle exec sidekiq -d -e development

您可以通过适当的rails环境替换开发。

您还应该在sikekiq configure(config / sidekiq.yml)中指定日志文件。例如:

concurrency: 5
development:
  pidfile: tmp/pids/sidekiq_development.pid
  logfile: log/sidekiq_development.log
beta:
  pidfile: /var/run/sidekiq_beta.log
  logfile: log/sidekiq_beta.pid
staging:
  pidfile: /var/run/sidekiq_stating.pid
  logfile: log/sidekiq_staging.log
production:
  pidfile: /var/run/sidekiq_production.pid
  logfile: log/sidekiq_production.log
  concurrency: 50

如果您使用Debian并且需要启动脚本,那么我可以在Github上使用此Gist:https://gist.github.com/alain75007/5517948