Задать вопрос
  • Как умело работать с Sidekiq и очередями?

    mainameiz
    @mainameiz
    Full-stack web-developer
    Очереди это, как уже сказал bmalets, что-то вроде списков задач. Они нужны в основном для управлением нагрузкой, параллельностью. По дефолту есть только очередь default.

    Классический пример разделения очередей:
    - mailer - очередь для рассылки почтовых сообщения пользователям
    - default - для всего остального

    Можно сделать так что для очереди mailer вы запускаете 10 процессов (не воркеров, а именно процессов ОС), а для default только 1. Тем самым вы делаете приоритетной очередь mailer.
    Распределением нагрузки можно также управлять с помощью "весов" (параметр -q mailer,9 default,1 ). В данном случае из 10 задач 9 будут взяты из очереди mailer и только одна из очереди default.

    Под воркерами могут подразумеваться два понятия:
    - воркер как процесс ОС который берет задачи из очередей на выполнение
    - воркер как класс руби, который выполняет какую-то бизнес-задачу

    В основном конечно же под воркерами подразумевается второй вариант.

    По вашим вопросам:
    - как воркеры исполняются?
    Процесс-обработчик берет задачу из redis и выполняет её. Тут важно понимать, что при аварийном завершении работы процесса вы можете потерять задачу (такие кейсы бывают очень критичными для бизнеса).

    - какой обьём памяти для этого нужен?
    Объем данных в redis'е можно посмотреть в админском интерфейсе.

    - почему redis

    Кто знает...

    - как это работает с redis
    ???

    - почему в perform_async нельзя передовать сами обьекты? а только id, strings, json ...?
    Можно, но не нужно. Все что попадает в perform_async должно попадать в redis. А это накладные расходы на хранение, сериализацию/десериализацию.

    - Как правильно вызывать и добавлять очереди.
    Что вы имели ввиду под "вызывать очереди"? Очереди добавляются автоматически
    Вообще формат хранения можно запросто посмотреть в самом редисе.
    Ответ написан
    1 комментарий