2012-03-13 30 views
19

Tôi đang sử dụng collectiveidea cho đường ray 2.3.8. Tôi đang tạo mảng công việc bị trì hoãn để thực hiện một số tác vụ, sau một thời gian tôi muốn hủy tất cả các công việc bị trì hoãn đang chạy. Nếu có ai biết cách làm điều này, hãy giúp tôi.Phá hủy tất cả công việc bị trì hoãn trong đường ray

Trả lời

50

Bạn chỉ phải đọc README cho delayed_job GitHub page để làm việc này ra:

Bạn có thể gọi công việc cào: rõ ràng để xóa tất cả các công việc trong hàng đợi.

+2

Điều này không làm những gì OP hỏi. Anh ta đang cố gắng giết các công việc đang chạy, không rõ ràng hàng đợi. – volx757

35

Ngoài các nhiệm vụ cào, việc làm DelayedJob chỉ là một mô hình ActiveRecord bình thường, vì vậy nếu bạn đang ở trong mã Ruby bạn có thể làm những gì bạn thích với họ:

Delayed::Job.destroy_all 
Delayed::Job.delete_all 
Delayed::Job.find(4).destroy 
# etc. 
+0

Bạn có thể vui lòng xây dựng Delayed :: Job.find (4) .destroy – codeit

+1

@clickit nó phá hủy công việc bị trì hoãn có id 4. – lulalala

+1

Có sự khác biệt giữa 'hủy' và' xóa' không? –

0

Âm thanh như bạn' đã có một quá trình cha mẹ muốn hết thời gian nếu bộ công việc của nó không hoàn thành trong một thời gian nhất định. Thay vì treo trên để tham chiếu đến các công việc mình, thiết lập một lá cờ trên một mô hình cho thấy rằng quá trình đã từ bỏ. Công việc có thể kiểm tra cờ đó và ngắn mạch nếu họ không cần nữa. (Lớp Job của bạn cũng nên bọc nội dung của phương thứC#perform của nó trong một khoảng thời gian chờ.)

Nó luôn luôn là một ý tưởng tồi để cố gắng để treo vào tham chiếu đến các đối tượng DJ như bạn có vẻ được đề xuất.

Các vấn đề liên quan