【问题标题】:Resque: don't enqueue redundant jobs?Resque:不要将多余的工作排入队列?
【发布时间】:2017-10-13 21:35:40
【问题描述】:

我有一组按优先级排列的 Resque 队列。对于最低优先级队列上的所有作业,它们没有参数,以后的运行将取代任何以前的运行——例如他们正在与外部服务同步数据。因此,用这些作业的多个副本创建积压是没有意义的——连续运行 3 次不会增加任何价值。

但在忙碌期间,我们确实会积压(仅在此队列上),因为工作人员忙于更高优先级的工作。

我可以通过首先阻止冗余作业排队来防止这种积压​​吗?

【问题讨论】:

  • 为了防止积压,首先您需要以某种方式跟踪同一个作业已经入队。因为 resque & redis 默认不提供这种唯一性的功能。

标签: ruby-on-rails resque resque-scheduler


【解决方案1】:

是的,有宝石可以做到这一点。 (AFAICT,它们通过使用参数列表对作业类进行散列处理并在 Redis 中单独维护一组“已入队的键”来工作。)

请参阅 https://github.com/resque/resque-lonerhttps://github.com/neighborland/resque_solo

【讨论】:

    猜你喜欢
    • 2011-08-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-06-05
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多