Tôi sử dụng celery
trong ứng dụng của mình để chạy các tác vụ định kỳ. Hãy xem ví dụ đơn giản dưới đâyGọi lại cho cần tây apply_async
from myqueue import Queue
@perodic_task(run_every=timedelta(minutes=1))
def process_queue():
queue = Queue()
uid, questions = queue.pop()
if uid is None:
return
job = group(do_stuff(q) for q in questions)
job.apply_async()
def do_stuff(question):
try:
...
except:
...
raise
Như bạn có thể thấy trong ví dụ trên, tôi sử dụng celery
để chạy nhiệm vụ async, nhưng (vì nó là một hàng đợi) tôi cần phải làm queue.fail(uid)
trong trường hợp ngoại lệ trong do_stuff
hoặc queue.ack(uid)
khác . Trong tình huống này, sẽ rất rõ ràng và hữu ích khi có một số cuộc gọi lại từ nhiệm vụ của tôi trong cả hai trường hợp - on_failure
và on_success
.
Tôi đã xem một số documentation, nhưng chưa bao giờ thấy thực tiễn sử dụng gọi lại với apply_async
. Có thể làm điều đó không?