Сельдерей - работа с возвращаемыми значениями задачи в views.py - PullRequest
0 голосов
/ 04 августа 2020

Я хочу получить значение результата задачи сельдерея, значение фактического оператора возврата моей задачи, а не сам task_id! Я не понимаю, как выполнить sh это в следующем примере:

views.py

def call_my_task(request)
user = User.objects.get(pk=request.user.pk)
    example_form = ExampleForm(data=request.POST)
    if example_form.is_valid():
            my_input = str(example_form.data.get("user_input"))
            check_input = validate_input.apply_async(kwargs={"my_input": my_input})
            check_input.get(timeout=30, interval=1)

tasks.py

@celery_app.task(name="Check example input", ignore_result=False)
def validate_input(my_input):
    check = subprocess.Popen("some cmd" + ' ' + my_input, shell=True,
                         stdout=subprocess.PIPE).communicate()[0].decode('utf-8').strip()
    return check

Делая это как поэтому всегда дает мне task_id в моем views.py и не сообщает мне значение «return check». Команда, вызываемая в задаче сельдерея, может возвращать только true или false, и именно это истинное или ложное значение (как str) - это то, что я хочу продолжить работу с моим views.py с.

Может кто-л. выручить меня?

1 Ответ

0 голосов
/ 04 августа 2020

Хорошо, просто заработало. Просто выберите возвращаемое значение с помощью check_input.info, см. Также: https://docs.celeryproject.org/en/stable/reference/celery.result.html#celery .result.AsyncResult.result

-> информация о свойстве Возвращаемое значение задачи.

Затем вы можете просто сделать что-то вроде: if check_input.info == str ('true'):

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