Ho recentemente scritto un po 'di codice per gestirlo, è disponibile nel mio ramo della gemma sidekiq-status. È possibile visualizzare, o usarlo qui: https://github.com/Robinson7D/sidekiq-status
(si dovrebbe utilizzare che come le informazioni git:
nel Gemfile, attualmente, fino al bivio principale del progetto implementa questa)
di usarlo , prima di memorizzare il job_identifier:
job_identifier = MyWorker.perform_at(3.hours.from_now, 'mike', 1)
E quando si vuole distruggerlo si chiama il metodo Sidekiq :: Status.cancel:
Sidekiq::Status.cancel job_identifier
Modifica: da quando ho scritto questo post, il mio codice è stato accettato nel fork principale di Sidekiq :: Status - https://github.com/utgarda/sidekiq-status. Non devi più usare la mia forchetta. Sulla forcella di Utgarda si innescherebbe chiamando non programmata, invece di annullare:
Sidekiq::Status.unschedule job_identifier
seguito: è anche possibile eliminare i lavori utilizzando la gemma Sidekiq normale come spiegato qui: https://github.com/mperham/sidekiq/wiki/API (anche se per i loro metodi si richiede l'unix-timestamp di quando il lavoro è pianificato per - non è possibile eliminare solo con l'id del lavoro, se si desidera eliminare un lavoro senza il timestamp, il metodo Sidekiq :: Status potrebbe essere giusto per te).
Tuttavia, invece dei modi in cui delineano nel wiki mi sento di raccomandare qualcosa lungo le linee di Sidekiq::ScheduledSet.new().delete(unix_timestamp, jid)
se si desidera eliminare solo un posto di lavoro.)