如何加载' task_kwargs '从' TaskResult '模型在' djjango_celery_result



我使用django_celery_results来保存一些芹菜任务的结果。每个任务获得kwargs作为输入,最后保存在TaskResulttask_kwargs字段中。

我有麻烦加载这些kwargs以后从他们得到保存在DB的方式。例如,这是一个条目:

"{'config_file_path': '/path/to/configs/some_config.json'}"
访问字段值的简单示例:
tkwargs = TaskResult.objects.get(id=1).task_kwargs

得到上面的字符串

获得task_kwargs作为python字典而不是该字符串的直接方法是什么?

我有:

args = json.loads(task.task_kwargs)
if isinstance(args, str):
args = args.replace("'", '"')
args = json.loads(args)

不好看,但很好用。

希望这个包能更简单一些(为什么它们没有从模型中反序列化出来?):

recent_tasks = TaskResult.objects.order_by('-date_done')[:10]
tasks_list = [
{
'task_id': task.task_id,
'task_name': task.task_name,
'task_args': json.loads((task.task_args or "null").replace("()", "null").replace('"null"', 'null')),
'task_kwargs': json.loads((json.loads(task.task_kwargs or 'null') or "null").replace("'", '"')),
'status': task.status,
'result': json.loads(task.result),
'date_created': task.date_created,
'date_done': task.date_done,
'meta': json.loads(task.meta),
'worker': task.worker,
'traceback': task.traceback,
}
for task in recent_tasks
]

相关内容

  • 没有找到相关文章

最新更新