ruby-sidekiq取消列表到计划工作

前端之家收集整理的这篇文章主要介绍了ruby-sidekiq取消列表到计划工作前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我有几个预定的工作运行如下:
MyWorker.perform_at(3.hours.from_now,'mike',1)

我想知道,如果稍后再说一个小时后,我觉得我想取消这份工作,我该如何去做呢?

解决方法

我最近写了一些代码来处理这个问题,它可以在我的sidekiq-status gem的分支中找到.你可以查看它,或在这里使用:
https://github.com/Robinson7D/sidekiq-status

(您将不得不使用它作为gemfile中的git:信息,目前,直到该项目的主分支实现此)

要使用它,首先存储job_identifier:

job_identifier = MyWorker.perform_at(3.hours.from_now,1)

当你想破坏它时,你会调用Sidekiq :: Status.cancel方法

Sidekiq::Status.cancel job_identifier

编辑:自从写这篇文章以后,我的代码被接受进入Sidekiq :: Status – https://github.com/utgarda/sidekiq-status的主要分支.你不再需要使用我的叉子.在Utgarda的分支上,您将通过调用unschedule来触发它,而不是取消:

Sidekiq::Status.unschedule job_identifier

此外:您还可以使用标准Sidekiq gem删除作业,如下所述:https://github.com/mperham/sidekiq/wiki/API(尽管对于他们的方法,您需要在作业计划时使用unix时间戳 – 您不能仅删除作业的ID;如果要删除没有时间戳的工作,Sidekiq :: Status方法可能适合您).

但是,除了在wiki中概述的方式之外,如果要仅删除一个作业,我将推荐一些沿着Sidekiq :: ScheduledSet.new().delete(unix_timestamp,jid))的东西.

猜你在找的Ruby相关文章