django celery task_id可以输出但是根据task_id在数据库无法查询到数据的问题

自己用django + celery做一个渗透测试框架

其中想做一个,用户下达任务后,会把用户的id和任务的id写入到数据库中。
这样用户可以查看到自己曾经的任务记录

问题代码如下:

 # 把执行的命令发送给任务队列,并获取任务的task_id
 task_id = asyTask.delay(request.user.username, command)
 print(task_id )
 # 把用户与任务信息绑定写入user_usertask
 u = UserTask()
 # 当前用户的ID
 u.userTask_user = User.objects.get(username=request.user)
 # 当前任务的ID
 u.userTask_task = celecy_models.TaskResult.objects.get(task_id=task_id)
 # 任务开始的时间
 u.date_start = time.strftime("%Y-%m-%d %H:%M:%S", time.localtime())
 u.save()

执行时总是会报

django_celery_results.models.TaskResult.DoesNotExist: TaskResult matching query does not exist.

在这里插入图片描述
很奇怪,明明输出任务的task_id时都可以正常输出,但是一旦用这个去数据库进行查询就说无法匹配到数据

如果手动写入又可以正常找到

 u.userTask_task = celecy_models.TaskResult.objects.get(task_id='8c18cbcd-a0e5-43f8-8d50-674028bd15c9')

很奇怪

后来发现加一句task_id.get()即可

# 把执行的命令发送给任务队列,并获取任务的task_id
task_id = asyTask.delay(request.user.username, command)
# 把用户与任务信息绑定写入user_usertask
u = UserTask()
# 当前用户的ID
u.userTask_user = User.objects.get(username=request.user)
# 当前任务的ID
# 获取任务返回值
task_id.get()
u.userTask_task = celecy_models.TaskResult.objects.get(task_id=task_id)
# 任务开始的时间
u.date_start = time.strftime("%Y-%m-%d %H:%M:%S", time.localtime())
u.save()
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值