Ограничение очереди ActiveJob

Кажется, что задача проста и понятна: мне нужно ограничить количество заданий, которые могут выполняться одновременно, чтобы мой сервер не взорвался. Но гугл молчит, может я что-то не так делаю? Просветите меня пожалуйста?

Я использую стандартный асинхронный адаптер.


person Nerver Corameiro    schedule 04.09.2019    source источник
comment
На самом деле это зависит от того, какой бэкэнд (адаптер очереди) вы используете. Например, с помощью sidekiq вы можете ограничить максимальное количество одновременных заданий, просто установив количество рабочих.   -  person Marek Lipka    schedule 04.09.2019
comment
@MarekLipka Я не хочу усложнять, поэтому я использую асинхронный адаптер rails по умолчанию.   -  person Nerver Corameiro    schedule 04.09.2019
comment
Так что это асинхронный адаптер по умолчанию в Rails 5, поэтому он как бы ограничен количеством потоков, и вы можете ограничить его дополнительно, как описано здесь: api.rubyonrails.org/classes/ActiveJob/QueueAdapters/ Кроме того, как говорится в этой части документации, для производственной среды не очень хороший выбор придерживаться значения по умолчанию адаптер.   -  person Marek Lipka    schedule 04.09.2019


Ответы (1)


Не рекомендуется использовать асинхронный адаптер rails по умолчанию в производстве, особенно для heroku dyno, который перезапускается один раз в день.

Для постановки в очередь и выполнения заданий в продакшене вам необходимо настроить бэкенд организации очереди, то есть вам нужно выбрать стороннюю библиотеку организации очереди, которую должен использовать Rails. Сама Rails предоставляет только внутрипроцессную систему очередей, которая хранит задания только в оперативной памяти. В случае сбоя процесса или перезагрузки компьютера все невыполненные задания теряются с асинхронным бэкэндом по умолчанию. Это может подойти для небольших приложений или некритических заданий, но для большинства производственных приложений потребуется выбрать постоянный сервер.

Существует множество поддерживаемых адаптеров на выбор, например:

  • Сидекик
  • Спасение
  • Отложенная работа

Легко начать, они дают четкие инструкции и примеры.

person Vibol    schedule 04.09.2019