Как долго должна длиться работа Sidekiq?

В вики Sidekiq указано:

  1. Сделайте свою работу маленькой и простой

Я получаю простой, я получаю идемпотентный и транзакционный, но что такое маленький? Может быть, требуемая память и время вычислений являются хорошей мерой? Мои задания Sidekiq занимают от 10 секунд до 30 минут.

Я думаю, что 10 секунд — это нормально, но как насчет длительной задачи на 30 минут? Я загружаю все данные определенного типа из базы данных в память, провожу над ними длительные вычисления и затем записываю результаты. Все три вещи в одном рабочем месте.

Это нормально? Или вместо этого я должен вызывать из рабочего задания несколько рабочих заданий, которые выполняют небольшие вычисления? Проблема в том, что для этих небольших вычислений могут потребоваться сложные хэш-таблицы, и было предложено не сохранять их в Redis, а использовать только небольшие простые значения.


person RevMoon    schedule 18.07.2013    source источник


Ответы (1)


Это зависит от того, как часто вы хотите/должны вызывать задание и приемлемо ли для вас, что это занимает так много времени.

Если вы запускаете задание с более короткими интервалами, чем требуется для завершения, оно, безусловно, будет слишком длинным.

Разделение его на несколько рабочих поможет только в том случае, если вы сможете улучшить общее время выполнения (например, если некоторые из них могут быть запущены одновременно).

Итак, как всегда, эмпирическое правило: пока это соответствует вашим потребностям, все в порядке.

Однако:

  • при длительных заданиях вы должны учитывать, что задание может завершиться ошибкой в ​​середине выполнения по какой-либо причине (сбой сервера и т. д.).
  • Сможете ли вы продолжить эту длительную работу там или она будет правильно откатана?
  • Также: Что произойдет, если данные будут изменены во время выполнения задания?
person Tobias Schoknecht    schedule 18.07.2013