检查具有特定参数的重新请求作业是否在队列中挂起

Check if a resque job with specific args is pending in queue

例如,我这样排队工作

Resque.enqueue(MyJob, user.id)

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

我希望有这样的语法:

Resque.queue('MyQueue').has_pending_job(MyJob, user.id)

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

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

  2. 使用 resque-status 扩展 https://github.com/quirkey/resque-status 来跟踪 job_ids 为特定用户排队的

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