我想得到一个celent任务结果的值,我的任务的实际返回语句的值,而不是task_id本身!假设以下示例,我不明白如何实现这一点:
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
这样做总是在我的views.py中给我task_id,而不会告诉我"返回检查";在芹菜任务中调用的命令只能返回true或false而这个真值或假值(作为str(正是我想要进一步研究我的views.py的东西。
可以smb。帮我?
好的,刚刚开始工作。只需使用check_input.info获取返回值,另请参阅:https://docs.celeryproject.org/en/stable/reference/celery.result.html#celery.result.AsyncResult.result
>属性信息任务返回值。
然后您可以执行以下操作:if check_input.info==str('true'(: