自己用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()