Как добавить пользовательский идентификатор для задачи Celery, чтобы позже отозвать задачу? - PullRequest
0 голосов
/ 20 июня 2019

Я хочу создать отложенную задачу, и если возникнут какие-то условия, мне нужно найти эту задачу и отозвать ее.

Вот как я создаю задачу:

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

Так есть ли какой-либо атрибут apply_async, в котором я могу определить свой пользовательский идентификатор, который впоследствии можно будет использовать для отмены этой конкретной задачи? Примерно так:

# 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 голосов
/ 21 июня 2019

Ну, отвечая на мой собственный вопрос после прочтения 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)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...