Gần đây tôi đã viết một chút mã để xử lý điều này, nó có sẵn trong nhánh của tôi về đá quý sidekiq-status. Bạn có thể xem nó, hoặc sử dụng nó ở đây: https://github.com/Robinson7D/sidekiq-status
(Bạn sẽ phải sử dụng như là thông tin git:
trong gemfile, hiện nay, cho đến ngã ba chính của dự án thực hiện điều này)
Để sử dụng nó , trước tiên bạn lưu trữ các job_identifier:
job_identifier = MyWorker.perform_at(3.hours.from_now, 'mike', 1)
Và khi bạn muốn để tiêu diệt nó, bạn gọi phương thức Sidekiq :: Status.cancel:
Sidekiq::Status.cancel job_identifier
Chỉnh sửa: kể từ khi viết bài đăng này, mã của tôi đã được chấp nhận vào ngã ba chính của Sidekiq :: Trạng thái - https://github.com/utgarda/sidekiq-status. Bạn không còn phải dùng nĩa của tôi nữa. Trên ngã ba Utgarda của bạn sẽ kích hoạt nó bằng cách gọi unschedule, thay vì hủy:
Sidekiq::Status.unschedule job_identifier
Tiếp tục: bạn cũng có thể xóa công việc bằng cách sử dụng đá quý Sidekiq tiêu chuẩn như đã giải thích ở đây: https://github.com/mperham/sidekiq/wiki/API (mặc dù các phương pháp của họ, bạn yêu cầu unix-timestamp khi công việc được lên lịch - bạn không thể xóa chỉ với id của công việc; nếu bạn muốn xóa công việc không có dấu thời gian, phương thức Sidekiq :: Status có thể phù hợp với bạn).
Tuy nhiên, thay vì cách chúng phác thảo trong wiki, tôi khuyên bạn nên làm gì đó dọc theo các dòng Sidekiq::ScheduledSet.new().delete(unix_timestamp, jid)
nếu bạn chỉ muốn xóa một công việc.)