12 августа 2019 г. 19:54

161

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

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