Запустите одну задачу до n раз в django сельдерея - PullRequest
1 голос
/ 28 января 2020

Предположим, у меня есть задача с именем lazy_post_task.

код примерно такой вещи

@app.task(bind=True)
def lazy_post_task(self, post_url):
    self.update_state(state='PROGRESS', meta={})
    .............

Теперь я хочу выполнить эту задачу до n раз, а n зависит от ввода пользователя, а также я хочу дождитесь завершения предыдущего задания. я имею в виду, предположим, что пользовательский ввод = 2, тогда я хочу запустить задачу до 2 раз, но по одному за раз.

1 Ответ

1 голос
/ 28 января 2020

Вы можете вызвать исключение self.retry(), чтобы повторить попытку. Чтобы получить количество повторов, используйте self.request.retries:

@app.task(bind=True)
def lazy_post_task(self, post_url, max_retries):
    self.update_state(state='PROGRESS', meta={})
    if max_retries < self.request.retries:
        raise self.retry()

Обратите внимание, что вам также необходимо передать max_retries пользователя в качестве аргумента.

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