Celery. Выполнение фоновой задачи через определенное время
12 Авг 2019 ,
2342
Иногда нам необходимо бывает выполнить определенную фоновую через определенное количество времени. Допустим через 90 секунд или через 15 минут. Иногда нам нужно бывает отправить sms сообщение или почтовое сообщение в указанное время.
Это все можно реализовать в Celery с помощью функции apply_async
Допустим , нам нужно отправить sms сообщение через 90 секунд.Для этого мы будем использовать параметр countdown функции apply_async, который принимает целое число(количество секунд).
@app.task
def send_sms(user_id):
# Ваш код, который реализует отправку sms
user_id = 5
#Первый способ, с использованием countdown
send_sms.apply_async((user_id,),countdown=90)
#Второй способ, с использованием ETA(estimated time of arrival)
from django.utils import timezone
from datetime import timedelta
send_sms.apply_async((user_id,),eta=timezone.now() + timedelta(seconds=90))
Заключение
В данной статье показано как с помощью параметров countdown и eta функции apply_async можно выполнить фоновую асинхронную задачу через определенное время.