为了阻止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文件呢?
答案 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