Подтвердить что ты не робот

Heroku: Что делать, когда ваш динозавр/работник падает?

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

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

спасибо

4b9b3361

Ответ 1

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

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

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

heroku workers 0; 
heroku workers 1;

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

heroku restart worker.1

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

heroku stack:migrate bamboo-mri-1.9.2

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

Ответ 2

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

heroku ps:restart web.1

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

Ответ 3

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

heroku restart web.1

Это сработало для меня.