Часовой механизм требует своего собственного процесса?

Я видел людей, которые говорили в нескольких разных местах, что часовой механизм должен запускаться на своем собственном динамо с прокфилем, который может выглядеть примерно так (пример из heroku):

clock: bundle exec clockwork lib/clock.rb

Есть ли причина не запускать его на том же динамо, что и рабочие? С процессом, который выглядит примерно так:

worker: bundle exec clockwork clock.rb & bundle exec sidekiq -C config/sidekiq.yml -L log/sidekiq.log

Кажется, это работает нормально, но я хотел бы знать причину, по которой люди говорят, что не следует так поступать. Любое руководство будет оценено. Заранее спасибо.

0 ответов

Недавно я начал запускать sidekiq и Clockwork бок о бок, вот так:

web: bundle exec puma -C config/puma.rb
worker: bundle exec clockwork clock.rb & bundle exec sidekiq & wait -n
# ^ https://help.heroku.com/CTFS2TJK/how-do-i-run-multiple-processes-on-a-dyno

И пока никаких проблем не наблюдается.... Это экономия 25 долларов в месяц для нас на хостинге heroku.

что произойдет, если умрут друзья? (@Anthony сказал)

Обычно sidekiq не умирает (по крайней мере, для меня), я думаю, это потому, что sidekiq только управляет вакансиями. Фактическая работа происходит в классах с методом perform(), и когда эти методы "вызывают / терпят неудачу", они не сбивают родительский элемент sidekiq вместе с ним. У Sidekiq есть графический интерфейс, который показывает очередь повторных попыток и мертвую очередь, поэтому мертвые задания оказываются в одном из этих мест.

Кстати, у Heroku есть статья о запуске нескольких заданий на одном "динамометрическом стенде":https://help.heroku.com/CTFS2TJK/how-do-i-run-multiple-processes-on-a-dyno

OP сказал:

Я видел, как люди говорили в паре разных мест

Мне было бы любопытно прочитать эти комментарии, если у вас есть ссылки.

Другие вопросы по тегам