Есть ли способ получить уведомление, как только определенная задача с определенным идентификатором задачи будет успешной или неудачной, используя Celery для Python?

Я хочу знать, есть ли способ отслеживать, завершается ли задача или нет, как только она выполняется с использованием сельдерея python. У меня есть событие, которое я хочу запустить на основе результатов определенной задачи.


person KudzieChase    schedule 07.04.2017    source источник


Ответы (1)


Вы можете запустить свою задачу как сельдерей @shared_task с блоком try except внутри:

@shared_task
def my_task(input1, input2, ...):
    Setting up...
    try:
        Do stuff
        fire_success_event() <- Your success event
    except Exception:
        The above stuff failed
        fire_fail_event() <- your fail event
        return 1 <- fail
    return 0 <- success

Удачи :)

person John Moutafis    schedule 07.04.2017
comment
Спасибо, но я хотел бы знать, была ли задача my_task успешной или неудачной. Точнее, я хочу получать уведомления вроде прослушивателя, который просто ждет, когда задача завершится успешно или неудачно, а затем действовать соответствующим образом. - person KudzieChase; 07.04.2017
comment
Затем вместо событий используйте оператор возврата (обычно 0: успех, 1: неудача). я отредактирую свой ответ - person John Moutafis; 07.04.2017
comment
Когда я это делаю, я, кажется, продолжаю получать отказ, поскольку задача может быть отложена в тот момент, когда я проверяю, что она возвращает. Вернитесь к моему предыдущему комментарию - person KudzieChase; 07.04.2017
comment
Вот почему я изначально предлагал запускать ваши события из задачи celery! - person John Moutafis; 07.04.2017
comment
Полезно знать дружище :) - person John Moutafis; 07.04.2017