再一次:工作不会变得多余吗?
Resque: don't enqueue redundant jobs?
我有一组按优先级排列的Resque队列。对于最低优先级队列中的所有作业,它们没有参数,后面的 运行 将取代任何先前的 运行——例如他们正在与外部服务同步数据。因此,创建具有这些作业的多个副本的积压是没有意义的——运行连续三次使用它没有任何价值。
但在繁忙时期,我们确实会遇到积压(仅在此队列中),因为工作人员正忙于更高优先级的工作。
我能否通过首先阻止冗余作业入队来防止这种积压?
是的,可以使用 Gem 来执行此操作。 (AFAICT,他们通过散列作业 class 及其参数列表并在 Redis 中单独维护一组 "keys already enqueued" 来工作。)
见https://github.com/resque/resque-loner and https://github.com/neighborland/resque_solo。
我有一组按优先级排列的Resque队列。对于最低优先级队列中的所有作业,它们没有参数,后面的 运行 将取代任何先前的 运行——例如他们正在与外部服务同步数据。因此,创建具有这些作业的多个副本的积压是没有意义的——运行连续三次使用它没有任何价值。
但在繁忙时期,我们确实会遇到积压(仅在此队列中),因为工作人员正忙于更高优先级的工作。
我能否通过首先阻止冗余作业入队来防止这种积压?
是的,可以使用 Gem 来执行此操作。 (AFAICT,他们通过散列作业 class 及其参数列表并在 Redis 中单独维护一组 "keys already enqueued" 来工作。)
见https://github.com/resque/resque-loner and https://github.com/neighborland/resque_solo。