2012-03-06 40 views
8

Tôi cần phải có một nhiệm vụ cần tây chạy sau khi đếm ngược, nhưng có thể đặt lại đếm ngược đó trong một số điều kiện nhất định. Ví dụ, tôi muốn gọi apply_async với countdown=15, nhưng nếu sự kiện nào đó xảy ra trước khi tác vụ được thực hiện, tôi muốn đặt đếm ngược đó xuống 15 giây một lần nữa.Đặt lại đếm ngược trên nhiệm vụ cần tây

Từ tài liệu và googling Tôi nghĩ rằng tôi có thể thực hiện việc này bằng cách lưu id tác vụ và sau đó thu hồi và tạo lại tác vụ nếu sự kiện xảy ra. Tôi đã tự hỏi nếu có một cách tiếp cận thanh lịch hơn với nó.

Trả lời

1

Thay vì đặt đếm ngược, bạn có thể chỉ hủy bỏ tác vụ này và tạo một tác vụ mới không?

+1

Cũng như tôi đã nói đó là những gì tôi đã đưa ra sau khi đọc tài liệu, nhưng vào thời điểm nó không cảm thấy đúng vì vậy tôi đã tự hỏi nếu có một cách khác để làm điều đó. –

0

Sử dụng một số bộ nhớ cache, chẳng hạn như Redis, để lưu trữ một số khóa khóa. Khi bạn gọi giá trị gia tăng apply_async của khóa. Khi bạn thực hiện nhiệm vụ này trong cần tây - hãy giảm giá trị này. Nếu giá trị bằng 0 - thực thi tác vụ. Vì vậy, nếu có hai cuộc gọi của apply_async truy cập của bạn sẽ là 2 và thực hiện nhiệm vụ đầu tiên sẽ được bỏ qua.

Tôi nghĩ rằng this code can help you.

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