2012-10-07 33 views
9

Tôi thấy cần tây hỗ trợ chuỗi nhiệm vụ: http://celery.readthedocs.org/en/latest/userguide/canvas.html#chains.Hủy chuỗi nhiệm vụ cần thiết?

Câu hỏi là: cách tôi có thể ngừng thực hiện chuỗi trong một công việc?

Ví dụ: chúng tôi có một chuỗi các mục N (N> 2). Và trong nhiệm vụ thứ hai, chúng tôi nhận ra rằng chúng tôi không cần tất cả các nhiệm vụ còn lại để thực thi. Phải làm gì?

+1

Điều gì về việc tăng ngoại lệ trong tác vụ khi bạn muốn dừng? – RickyA

+0

âm thanh tốt :) tôi sẽ cố gắng để –

+1

Đã làm việc? ... – RickyA

Trả lời

4

Trong phiên bản mới hơn của cần tây (3.1.6), bạn có thể thu hồi toàn bộ chuỗi bằng cách đơn giản là đi bộ chuỗi và thu hồi từng mục.

# Build a chain for results 
from tasks import addd 
from celery import chain 

def revoke_chain(result): 
    while result: 
     result.revoke() 
     result = result.parent 

# independent tasks (with immutable signatures) 
c = chain(*tuple(add.si(i,i) for i in xrange(50))) 
h = c() 

# some time later ... 
revoke_chain(h) 

# dependant task 
c = add.s(1,1) | add.s(2) | add.s(3) 
h = c() 

# some time later ... 
revoke_chain(h) 
Các vấn đề liên quan