Trong một số điều kiện, tôi muốn thực hiện nhiệm vụ cần tây từ bên trong nhiệm vụ đó. Tôi thử như sau:Làm thế nào để thực hiện nhiệm vụ cần tây từ bên trong nhiệm vụ?
from celery.task import task
from celery import states
@task()
def run_simulation():
if some_condition:
run_simulation.update_state(state=states.FAILURE)
return False
Tuy nhiên, nhiệm vụ vẫn báo cáo đã thành công:
công tác sim.tasks.run_simulation [9235e3a7-c6d2-4219-bbc7-acf65c816e65] thành công trong việc 1.17847704887s : False
Dường như trạng thái chỉ có thể được sửa đổi trong khi tác vụ đang chạy và sau khi hoàn thành - cần thay đổi trạng thái thành bất kỳ kết quả nào (tham khảo this question). Có cách nào, không thất bại nhiệm vụ bằng cách nêu ra một ngoại lệ, để làm cho cần tây quay trở lại rằng nhiệm vụ đã thất bại?
bạn đã cố gắng để nâng cao một ngoại lệ từ bên trong mã của bạn? – hymloth
@hymloth Việc đưa ra một ngoại lệ khiến cho nhiệm vụ thất bại, bao gồm việc gửi cho tôi một email mọi lúc xảy ra - điều mà tôi muốn tránh. Xin lỗi vì không rõ ràng, tôi đã thay đổi câu hỏi ngay bây giờ. – Meilo