Вам нужно будет сбалансировать две проблемы: Масштабируемость для большого количества пользователей по сравнению с Google, закрывающим вас за просмотр в нарушение условий их использования.
Таким образом, ваша система должна будет иметь возможность распределять задачи по различнымразные IP-адреса, чтобы скрыть ваши массовые расчистки, что предполагает как минимум два уровня очередей.Один для управления всеми заданиями и отправки их на каждый отдельный IP-адрес для последующего поиска и сбора результатов и очередей на каждом отдельном компьютере для хранения запрошенных поисков, пока они не будут выполнены и результаты возвращены.
Понятия не имею, чтоПороговые значения Google (я уверен, что они этого не рекламируют), но их превышение и обрезание, очевидно, будут разрушительными для того, что вы пытаетесь сделать, поэтому ваша простая задача с циклическим рейком - это именно то, что вы не должны делать после определенного числапользователей.
Так что, да, используйте какую-то очередь, но понимаете, что вы, вероятно, преследуете цель, отличную от типичной цели очереди, в том, что вы хотите намеренно задерживать задания, а не разгружать слово, чтобы избежать задержек пользовательского интерфейса,Таким образом, вы будете искать способы замедлить очередь, а не просто выполнять задание за заданием, когда они поступают в очередь.
Таким образом, основываясь на кратком осмотре DelayedJob и BackgroundJobs, похоже, что DelayedJob имеет то, что выпонадобится с атрибутом run_at
.Но я только размышляю здесь, и я уверен, что эксперт скажет больше.