Celery. Выполнение фоновой задачи через определенное время

12 Авг 2019 , 580

Иногда нам необходимо бывает выполнить определенную фоновую через определенное количество времени. Допустим через 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 можно выполнить фоновую асинхронную задачу через определенное время.

comments powered by Disqus

Подписка

Подпишитесь на наш список рассылки, чтобы получать обновления из блога

Рубрики

Теги