Конечная задача с сельдереем - PullRequest
1 голос
/ 09 марта 2012

Я использую Celery в проекте, который интегрируется с сторонним API.Мне нужно отправить файл в сервис для обработки.После того, как я отправляю файл, мне нужно каждые 10 секунд запрашивать состояние обработки, пока она не будет завершена.

Как у меня сейчас, основная задача будет выделять подзадачи для проверки состояния обработки.Я бы хотел, чтобы эти подзадачи действовали как задачи с конечным ритмом сельдерея.Я хочу начать работу с заданиями, когда я называю ее подзадачей, и хочу завершить ее, когда задача будет завершена.

Какой лучший способ выполнить это?

1 Ответ

4 голосов
/ 10 марта 2012

Используйте Task.retry, например:

from celery.result import AsyncResult

@task
def verify_task(task_id):
    result = AsyncResult(task_id)
    if result.ready():
         do_something_with(result.get())
    else:
        verify_task.retry(countdown=1)

Обратный отсчет - это количество секунд до повтора.

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