Pod pewnymi warunkami chcę sprawić, aby zadanie selerowe nie powiodło się w ramach tego zadania. Próbowałem następujące:Jak sprawić, aby zadanie selera nie powiodło się w ramach zadania?
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
Jednak zadanie nadal zgłasza się udało:
sim.tasks.run_simulation Task [9235e3a7-c6d2-4219-bbc7-acf65c816e65] udało się 1.17847704887s : Fałsz
wydaje się, że państwo może być modyfikowana tylko wtedy, gdy zadanie jest uruchomiony, a po jego zakończeniu - seler zmienia stan na cokolwiek uzna to wynik (patrz this question). Czy jest jakiś sposób, bez zaniedbania zadania przez podniesienie wyjątku, aby zwrócić selerowi, że zadanie się nie powiodło?
próbowałeś podnieść wyjątek od wewnątrz kodu? – hymloth
@hymloth Zgłaszanie wyjątków sprawia, że zadanie się nie udaje, co obejmuje wysyłanie do mnie wiadomości e-mail za każdym razem, kiedy to się dzieje - czegoś, czego chciałbym uniknąć. Przepraszam za bycie niejasnym, zmieniłem teraz pytanie. – Meilo