2016-10-03 3 views
1

У меня есть приложение cuba, с которым я хочу использовать sidekiq.Сервер Sidekiq не обрабатывает запланированные задания при запуске с использованием systemd

Это, как я настроить config.ru:

require './app' 
require 'sidekiq' 
require 'sidekiq/web' 

environment = ENV['RACK_ENV'] || "development" 
config_vars = YAML.load_file("./config.yml")[environment] 

Sidekiq.configure_client do |config| 
    config.redis = { :url => config_vars["redis_uri"] } 
end 

Sidekiq.configure_server do |config| 
    config.redis = { url: config_vars["redis_uri"] } 
    config.average_scheduled_poll_interval = 5 
end 

# run Cuba 
run Rack::URLMap.new('/' => Cuba, '/sidekiq' => Sidekiq::Web) 

Я начал sidekiq с использованием Systemd. Это Systemd скрипт, который я приспособил от sidekiq.service на сайте sidekiq .:

# 
# systemd unit file for CentOS 7, Ubuntu 15.04 
# 
# Customize this file based on your bundler location, app directory, etc. 
# Put this in /usr/lib/systemd/system (CentOS) or /lib/systemd/system (Ubuntu). 
# Run: 
# - systemctl enable sidekiq 
# - systemctl {start,stop,restart} sidekiq 
# 
# This file corresponds to a single Sidekiq process. Add multiple copies 
# to run multiple processes (sidekiq-1, sidekiq-2, etc). 
# 
# See Inspeqtor's Systemd wiki page for more detail about Systemd: 
# https://github.com/mperham/inspeqtor/wiki/Systemd 
# 
[Unit] 
Description=sidekiq 
# start us only once the network and logging subsystems are available, 
# consider adding redis-server.service if Redis is local and systemd-managed. 
After=syslog.target network.target 

# See these pages for lots of options: 
# http://0pointer.de/public/systemd-man/systemd.service.html 
# http://0pointer.de/public/systemd-man/systemd.exec.html 
[Service] 
Type=simple 
Environment=RACK_ENV=development 
WorkingDirectory=/media/temp/bandmanage/repos/fall_prediction_verification 
# If you use rbenv: 
#ExecStart=/bin/bash -lc 'pwd && bundle exec sidekiq -e production' 
ExecStart=/home/froy001/.rvm/wrappers/fall_prediction/bundle exec "sidekiq -r app.rb -L log/sidekiq.log -e development" 
# If you use the system's ruby: 
#ExecStart=/usr/local/bin/bundle exec sidekiq -e production 
User=root 
Group=root 
UMask=0002 

# if we crash, restart 
RestartSec=1 
Restart=on-failure 

# output goes to /var/log/syslog 
StandardOutput=syslog 
StandardError=syslog 

# This will default to "bundler" if we don't specify it 
SyslogIdentifier=sidekiq 

[Install] 
WantedBy=multi-user.target 

код вызова работника является:

raw_msg = JSON.parse(req.body.read, {:symbolize_names => true}) 
      if raw_msg 
      ts = raw_msg[:ts] 
      waiting_period = (1000*60*3) # wait 3 min before checking 
      perform_at_time = Time.at((ts + waiting_period)/1000).utc 

      FallVerificationWorker.perform_at((0.5).minute.from_now, raw_msg) 

      my_res = { result: "success", status: 200}.to_json 
      res.status = 200 
      res.write my_res 
      else 
      my_res = { result: "not found", status: 404}.to_json 
      res.status = 404 
      res.write my_res 
      end 

Я использую только д по умолчанию.

Моя проблема заключается в том, что работа не обрабатывается вообще.

ответ

3

После запуска systemctl enable sidekiq так, что она начинается при загрузке и systemctl start sidekiq так, что она начинается сразу, то вы должны иметь некоторые журналы для обзора, который обеспечит некоторые детали о любой неисправности, чтобы начать:

sudo journalctl -u sidekiq 

Обзоре журналы, просмотрите документы systemd и отредактируйте файл вашего устройства по мере необходимости. Вы можете найти всю установленную документацию systemd с помощью apropos systemd. Некоторые из наиболее полезных справочных страниц для просмотра: systemd.service, systemd.exec и systemd.unit

+0

Я просмотрел файлы и страницы руководства. Кажется, что сервер начинает нормально, он запущен и в журналы нет ошибок. Это похоже на то, что сервер sidekiq не прослушивает. Какие-либо предложения? – froy001

+0

вы можете использовать 'ps', чтобы подтвердить, что процесс запущен, проверьте правила брандмауэра, попробуйте напрямую подключиться к порту или сокету внутри устройства. –

+0

Все проверяется. Думаю, я продолжу копать, так как ничего не выделяется. Естественно, если у вас есть момент просветления, и вы помните какой-то темный угол процесса установки, я был бы признателен, если вы сбросите линию. – froy001

Смежные вопросы