Как использовать sidekiq и очередь в качестве опции searchkick `callbacks` - PullRequest
0 голосов
/ 08 мая 2020

Я использую searchkick для работы с elasticsearch в приложении RoR 4. Searchkick великолепен и на удивление прост в использовании, но некоторые из его параметров описаны недостаточно хорошо. Это довольно тяжелый сайт с c трафиком, поэтому я пытаюсь выполнять большую часть работы асинхронно с помощью sidekiq. Я пытаюсь сделать так, чтобы индекс обновления после создания / обновления записи также работал асинхронно, но вариант: queue кажется даже более подходящим для моего случая, поскольку он выполняет массовое обновление отсутствующих записей.

Итак, документы говорят для set_up redis и опции обратного вызова в модели и:

Затем настройте запуск фонового задания.

Searchkick::ProcessQueueJob.perform_later(class_name: "Product")

где чтобы поместить этот код?

Когда я добавляю некоторые записи, они невидимы, пока я не запустил их один раз, поэтому следует ли запускать их по расписанию? как задача CRON?

1 Ответ

1 голос
/ 09 июля 2020

Да, вам нужно настроить задание cron: создать задачу rake и начать ее выполнение. Обратный вызов searchkick в качестве очереди использует очередь Redis. Как только задание начинается, оно берет все накопленные на данный момент идентификаторы «продукта» и индексирует их. Так что, если вы хотите обновить индекс вашего продукта, вам необходимо выполнять эту работу неоднократно.

...