Heroku: Что делать, если ваш динамо / работник падает? - PullRequest
12 голосов
/ 14 июня 2011

У меня есть работник, выполняющий некоторую обработку 24/7. Однако иногда происходит сбой кода, и его необходимо перезапустить (даже если я поймаю исключение, мне придется перезапустить рабочий, чтобы он заработал).

Что вы делаете, когда это происходит, или я делаю что-то не так, и это не должно происходить вообще? У тебя динамо / рабочие рушатся или это только я?

спасибо

Ответы [ 3 ]

17 голосов
/ 14 июня 2011

Heroku должен перезапускать работника каждый раз, когда он падает. Насколько я знаю, вам не нужно ничего выбирать или настраивать. Что бы ни находилось в вашей работе: рабочая задача будет выполнена, как только она выйдет из строя.

В случае, если вы сильно зависите от фоновых заданий в вашем веб-приложении. Вы можете создать задачу rake, которая найдет последнюю запись для обновления и выполнить фоновое задание для ее обновления. Или, возможно, автоматизировать задачу rake, чтобы найти остальные записи, которые необходимо обновить, начиная с последнего сбоя.

Либо вы принудительно перезапускаете работника вручную, как указано в этой статье (с использованием delayed_job):

heroku workers 0; 
heroku workers 1;

Или, возможно, вы можете перезапустить определенного работника, выполнив (упомянутое в этой статье ):

heroku restart worker.1

Кстати, попробуйте стек 1.9 . Перед этим убедитесь, что ваше приложение совместимо с 1.9.2. Надеюсь, там сбои встречаются реже:

heroku stack:migrate bamboo-mri-1.9.2

В том случае, если такие проблемы все еще возникают. Лучше всего связаться со службой поддержки Heroku. Они очень отзывчивы в том, что они делают.

9 голосов
/ 16 января 2014

Последняя команда для перезагрузка определенный веб-работник heroku (2014):

heroku ps:restart web.1

(проверено на стеке Cedar)

1 голос
/ 27 марта 2014

Иногда, например, в случае сбоя БД, рабочий не может перезапуститься автоматически. вам нужно будет сделать это.

перезагрузка герою web.1

У меня это сработало.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...