Как получить фактическое возвращаемое значение вместо id задачи в celery?
У меня есть приложение django для запуска некоторых команд linux, принимаемых из формы. Я реализую как реальный процесс, так и процесс с использованием celery.
Я передаю аргументы задаче celery и хочу получить от нее возвращаемое значение, но получаю только id задачи.
Это я запускаю задачу celery в views.py:
if 'celeryform' in request.POST:
command = request.POST.get('command')
rep = request.POST.get('rep')
dur = request.POST.get('dur')
cmd ='powershell -command '+command
result=celery_run.delay(cmd,rep,dur)
context = {'output':result}
return render(request,'home.html',context)
Это мой tasks.py:
from __future__ import absolute_import,unicode_literals
from celery import Celery, shared_task
import time,subprocess
app = Celery('tasks', broker='redis://localhost:6379',include=['problem.tasks.add'])
@shared_task
def celery_run(cmd,rep,dur):
output=''
for i in range(int(rep)):
time.sleep(int(dur))
p=subprocess.run(cmd,capture_output=True,text=True,shell=True)
output += p.stdout
return output
Я отображаю свой вывод в textarea на веб-странице, я получаю вывод в виде
d59af727-b24d-4518-9b66-dff063864c4a
Вышеупомянутый является идентификатором задачи, я полагаю
Как получить фактическое возвращаемое значение?
Образец возвращаемого значения при использовании обычного метода с командой=pwd,rep=1,dur=2
Path
----
D:\betsol\Linux_command_app
Path
----
D:\betsol\Linux_command_app