Django:芹菜显示同一任务的不同状态
我有一个django应用程序,有两个芹菜任务,比如task1和task2。来自前端的POST请求会触发task1,请求必须发回任务id,以便前端稍后可以轮询其状态。 task2应该在task1成功后异步运行 以下是我的任务定义:Django:芹菜显示同一任务的不同状态,django,celery,django-celery,celery-task,Django,Celery,Django Celery,Celery Task,我有一个django应用程序,有两个芹菜任务,比如task1和task2。来自前端的POST请求会触发task1,请求必须发回任务id,以便前端稍后可以轮询其状态。 task2应该在task1成功后异步运行 以下是我的任务定义: @shared_task(ignore_result=False) def task1(pk: int): # retrieve object matching pk return task1_func(obj) @shared_task(ignor
@shared_task(ignore_result=False)
def task1(pk: int):
# retrieve object matching pk
return task1_func(obj)
@shared_task(ignore_result=False)
def task2(task_id: int):
task = AsyncResult(task_id)
while not task.ready():
logger.info("status {}".format(task.status))
time.sleep(1)
return task2_func()
下面是我在视图中触发它们的方式。py:
class MyView(viewsets.ModelViewSet):
def create(self, request):
# create object
task = task1.delay(obj.pk)
task2.delay(task.id)
#breakpoint
return Response(task.id, status=status.HTTP_200_OK)
现在,当我尝试在断点处检查状态时,它显示成功:
In [1]: task.id
Out[1]: '97f8d150-de04-4848-a400-3882988c833c'
In [2]: task.status
Out[2]: 'SUCCESS'
In [3]: AsyncResult(task.id).status
Out[3]: 'SUCCESS'
但是task2中的代码永远不会执行,因为task2中task1的状态永远不会从PENDING
更改。我做错了什么?显然,我的结果正在被存储和访问,但由于某些原因,我无法从另一个任务中看到状态的变化。
我无法链接任务,因为我必须将第一个任务的id发送到前端