检查具有特定args的resque作业是否在队列中待处理

dav*_*ler 5 ruby ruby-on-rails resque ruby-on-rails-4

例如,我就这样排队了

Resque.enqueue(MyJob, user.id)
Run Code Online (Sandbox Code Playgroud)

在使用相同的作业进入另一个作业之前,user.id我想检查队列中是否已存在具有该用户ID的作业.

我希望有一些语法:

Resque.queue('MyQueue').has_pending_job(MyJob, user.id)
Run Code Online (Sandbox Code Playgroud)

小智 4

我不认为有这样的事情,你可以通过多种选择来实现相同的目标

  1. 您可以has_pending_jobs在用户中拥有该属性,在作业开始时将其更新为 true,在作业结束时将其更新为 false

  2. 使用resque-status扩展https://github.com/quirkey/resque-status来跟踪job_ids某个用户排队的情况

  3. 为每个用户使用单独的队列(这是不可扩展的)并检查队列中是否有该用户的内容