2012-01-27 34 views
5

Đây là một câu hỏi tiếp theo cho câu hỏi trước đây của tôi: Cancel an already executing task with Celery?django cần tây chấm dứt subprocesses nhiệm vụ của

celery.task.control.revoke({task_id}, terminate=True) 

không thực sự giết người lao động của tôi chạy nhiệm vụ. Tôi đang gặp vấn đề rằng nhiệm vụ của tôi đang chạy các tiến trình con không chết khi nhiệm vụ bị thu hồi.

Bài đăng này của dmarkey http://dmarkey.com/wordpress/2011/09/07/killing-child-processes-of-celery-tasks-on-a-timeout/ là gần nhất tôi đã nhìn thấy những gì tôi muốn làm, ngoại trừ tôi không muốn giết vào thời gian chờ, mà là khi tôi thu hồi() với task_id.

Dường như tất cả những gì tôi có là task_id (String), có cách nào để hủy các quy trình con đó không? Cảm ơn sự giúp đỡ của bạn - Tôi không có nhiều kinh nghiệm với điều này như tôi muốn, điều hướng các tài liệu là một thách thức!

Trả lời

3

Thử đặt lại một cuộc gọi lại cho on_revoked để giết các tiến trình con của tác vụ.

+0

Có cách nào tốt để lấy (các) pid để chạy các quy trình con không? – dcoffey3296

+0

Có thể, nhưng tôi không biết về nó. Có lẽ bạn có thể theo dõi chúng khi chúng được tạo ra? Chỉnh sửa: thực sự, mã trong liên kết của bạn (bởi dmarkey) có vẻ như nó có thể hoạt động, hoặc? – aganders3

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