Уведомления

Группа в Telegram: @pythonsu

#1 Окт. 9, 2018 19:02:45

pyDev
Зарегистрирован: 2017-11-22
Сообщения: 19
Репутация: +  0  -
Профиль   Отправить e-mail  

Celery apply_async(expires=<time>)

Добрый вечер. Назрел вопрс по Селери. Как поймать ексепшн когда общее время таска на выполнение заканчиваеться? В случае использования soft_time_limit or time_limit, есть специальные обрабтчики. А как быть с параметром expires (apply_async(expires=<time>)) ?

Отредактировано pyDev (Окт. 9, 2018 19:15:45)

Офлайн

#2 Окт. 10, 2018 00:27:28

romankrv
От:
Зарегистрирован: 2008-05-23
Сообщения: 513
Репутация: +  0  -
Профиль   Отправить e-mail  

Celery apply_async(expires=<time>)

Попробуйте провести вот такое исследование:

For starting scheduler; http://docs.celeryproject.org/en/latest/userguide/periodic-tasks.html#starting-the-scheduler

Crontab schedulers; http://docs.celeryproject.org/en/latest/userguide/periodic-tasks.html#crontab-schedules

You don't need task trigger. You should set crontab as crontab(minute=“*/15”)

 from celery.schedules import crontab
CELERYBEAT_SCHEDULE = {
'periodic_send_email': {
    'task': 'cloud_app.tasks.periodic_send_email',
    'schedule': crontab(minute="*/15"),
},
}
And, you must be started celery with -B parameter. First, start celery worker with command;

 celery -A proj worker -B
After, start celery beat;

 celery -A proj beat

Офлайн

#3 Окт. 16, 2018 16:37:34

pyDev
Зарегистрирован: 2017-11-22
Сообщения: 19
Репутация: +  0  -
Профиль   Отправить e-mail  

Celery apply_async(expires=<time>)

romankrv
Попробуйте провести вот такое исследование
Уже провел, перед тем как задавать здесь вопрос. Это несовсем то, что мне нужно. Это расписание выполнения тасков, в определенное время и периодичностью. А у меня таск запускаеться в обработку после определенного входящего запросса и работает до тех пор, пока не получит нужный результат выполнения или принудительно закончиться по истечению определенного времени, внезависимости от результата. Собственно проблема задать это время. Я частично решил этот вопрос вызовом метода таска get() и перехватом исключения TaskRevokedError. Но мне это не подходит ибо при использовании даного метода, происходит ожидание его(таска) выполнения.
Может ещё есть какие-то идеи?

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version