Запуск сотрудника delayed_job на Heroku?
Итак, сейчас у меня есть реализация delayed_job, которая отлично работает в моей локальной среде разработки. Чтобы запустить рабочего на моей машине, я просто запускаю rake jobs:work
, и он отлично работает.
Чтобы заставить delayed_job работать с heroku, я использовал почти ту же команду: heroku run rake jobs:work
. Это решение работает без того, чтобы я ничего не оплачивал для расходов на обслуживание для Heroku, но мне нужно оставить окно командной строки открытым, иначе рабочий-замедлитель остановится, когда я его закрою. Есть ли команда для постоянного поддержания работы этого сотрудника delayed_job даже при закрытии окна команд? Или есть еще один лучший способ сделать это?
Ответы
Ответ 1
Добавить
worker: rake jobs:work
на ваш Procfile
.
EDIT:
Даже если вы запустите его с консоли, вы купите "рабочий дино", но Heroku имеет в секунду билинг. Таким образом, вы не платите, потому что у вас есть 750 часов бесплатно, а месяц в худшем случае - 744 часа, поэтому у вас есть бесплатный 6h для ваших дополнительных динозавров, задач планировщика и т.д.
Ответ 2
Я рекомендую безошибочный камень для запуска отложенных заданий на герою. Я использую это сейчас - он отлично работает для меня, с нуля и с нулевой стоимостью.
Я также использовал hirefireapp, что дает гораздо более высокую степень контроля за масштабированием рабочих. Это стоит, но стоит меньше, чем один геройский рабочий (более месяца). Я не использую это сейчас, но использовал его, и он работал очень хорошо.
Ответ 3
Я еще не пробовал его лично, но вы можете найти nohup
полезным. Это позволяет вашему процессу работать, даже если вы закрыли окно терминала. Ссылка: http://linux.101hacks.com/unix/nohup-command/
Ответ 4
Использование консоли heroku для привлечения рабочих на задания создаст только созданный временный динамометр для задания. Чтобы задания выполнялись без cli, вам нужно поместить команду в файл Procfile по предложению @Lucaksz.
После развертывания вам также необходимо масштабировать динамическое формирование, так как герою нужно знать, сколько динамиков должно быть помещено в тип процесса следующим образом:
heroku ps: scale worker = 1
Подробнее можно прочитать здесь https://devcenter.heroku.com/articles/scaling