如何为Celery任务添加自定义ID,以便以后撤消任务?

时间:2019-06-20 15:02:35

标签: python django celery

我想创建延迟任务,如果有条件,我需要找到该任务并将其撤销。

这是我创建任务的方式:

notify_before_departure.apply_async(
            args=(user.fcm_registration_token, booking.bus_stop_from.title,),
            eta=notification_time,
        )

那么,在apply_async上有什么属性可以定义我的自定义ID,以后可以将其用于撤销此确切的任务吗?像这样:

# create task
notify_before_departure.apply_async(
                args=(user.fcm_registration_token, booking.bus_stop_from.title,),
                eta=notification_time,
                custom_id=booking.id
            )
# revoke if needed
from celery.task.control import revoke 
revoke(booking.id, terminate=True)

1 个答案:

答案 0 :(得分:0)

好吧,读完FAQ后回答我自己的问题:

notify_before_departure.apply_async(
            args=(user.fcm_registration_token, booking.bus_stop_from.title,),
            eta=notification_time,
            task_id=f"departure_push_for_booking_{booking.id}"
        )

然后:

revoke(f"departure_push_for_booking_{booking.id}", terminate=True)