我想创建延迟任务,如果有条件,我需要找到该任务并将其撤销。
这是我创建任务的方式:
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)
答案 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)