Rails: Как перезагрузить sidekiq?
Я использую sidekiq gem для запуска вызовов API в фоновом режиме. Я запускал sidekiq в процессе Daemon, например:
bundle exec sidekiq -d
Теперь я внес некоторые изменения в свой метод, поэтому я хочу перезапустить sidekiq. Я попытался убить sidekiq, используя следующую команду:
kill -9 process_id
но он не работает. Я хочу знать команду для перезапуска sidekiq процесса. Если у вас есть идеи, пожалуйста, поделитесь со мной.
Я также попробовал следующую команду:
sidekiqctl stop /path/to/pid file/pids/sidekiq.pid
Ответы
Ответ 1
Итак, после того, как вы найдете файл proces_id, используйте команду ниже, которая заставит рабочих получать новые задания, и они завершат существующие задания.
kill -USR1 [PROCESS_ID]
После этого вы можете убить их
kill -TERM [PROCESS_ID]
Также есть страница на sidekiq/wiki об этом, называемом Signals.
[править]
Здесь - страница сигнала.
[править]
Отметьте видео
Ответ 2
Начало:
$ bundle exec sidekiq -d -P tmp/sidekiq.pid -L log/sidekiq.log
где -d
demonize, -P
файл pid, -L
файл журнала.
Остановка:
$ bundle exec sidekiqctl stop tmp/sidekiq.pid 0
Sidekiq shut down gracefully.
где 0
- количество секунд, чтобы подождать, пока не исчезнет Sidekiq.
Ответ 3
Чтобы поддерживать работу демона, в классах HardWorker определенно есть хорошая обработка ошибок, но вы также можете использовать приведенную ниже команду для перезапуска бегунов sidekiq, если они не найдены в системных процессах.
x=`ps aux | grep sidekiq | grep -v grep | awk '{print $2}'`; [ "$x" == "" ] && cd /path/to/deploy && bundle exec sidekiq -d -L /path/to/deploy/log/sidekiq.log -C /path/to/deploy/config/sidekiq.yml -e production
Это в основном ищет PID с помощью ps aux | grep sidekiq | grep -v grep | awk '{print $2}'
, а затем сохраняет его в переменной x
. Затем, если он пуст, он запустит демоннизированный процесс sidekiq.
Вы можете вставить этого парня в работу cron или что-то в этом роде. Но если ваши задания постоянно терпят неудачу, вы определенно захотите выяснить, почему.
EDIT: добавлен путь для развертывания из cron.
Ответ 4
- Введите следующую команду:
ps -ef | grep sidekiq
Это дает process_id и другие детали выполнения sidekiq процесса в фоновом режиме.
- Скопируйте process_id и используйте следующую команду:
kill process_id
- Используйте следующую команду, чтобы снова запустить sidekiq в фоновом режиме с помощью опции -d:
пакет exec sidekiq -d -L log/sidekiq.log
Ответ 5
Вы можете просто написать на консоли (НЕ ПО ПРОИЗВОДСТВУ):
-
ps aux | grep sidekiq
![введите описание изображения здесь]()
-
тогда вам нужно убить процесс:
kill number_of_process
или kill -9 number_of_process
, если это необходимо
![введите описание изображения здесь]()
-
теперь вы можете проверить с помощью ps aux
, если еще есть sth, чтобы убить
- start sidekiq
sidekiq