Skip to content

task函数任务参数 TaskParam

在调用DataAnalysisSubmit类的submit_task方法时,需要传入一个被celery.shared_task修饰的函数, 在该函数内部,可以通过透传的参数实例化 TaskParam 类。

TaskParam 类的使用场景见下面代码示意:

# !/usr/bin/env python
# -*- coding:utf-8 -*
from celery import shared_task
from hippo.web import TaskParam # note here, 该类位于 hippo.web 下
from hippo.log_tracking import platform_monitor, TASK

@shared_task(ignore_result=False)
@platform_monitor(TASK)
def generate_quote_task(**kwargs) -> dict:
    task_param = TaskParam(**kwargs) # note here, 通过透传的参数实例化该类
    pass

一些常用的属性及方法说明

  • task_param.inputs_json 类的属性: 保存了前端界面配置的所有左侧参数
  • task_param.STATUS 类的静态常量: 该常量定义了任务的状态值,目前包含init,submitted,running,failed,aborted,succeeded状态值
  • task_param.update_status(task_param.STATUS.succeeded) 类的方法: 与平台通信,更新该任务的状态,一般根据情况更新为 succeededfailed

注: 1. task_param只能通过inputs_json属性获取左侧参数。右侧配置参数无法获取,这是保证任务只被执行一次,且不能修改参数 1. update_status的参数推荐使用STATUS常量的属性,避免写字符串错误导致异常,eg: task_param.STATUS.succeeded

继承自父类的相关属性和方法说明

路径依赖相关

  • task_param.workflow_root 类的属性(需要子类实现): 该路径由DataAnalysisSubmit.submit_task(**kwargs)提交时有框架注入该参数值;保存了本次请求工作空间目录所在的位置,一般不使用该属性处理路径关系
  • task_param.path_uuid 类的属性: 生成路径所需的唯一uuid,确定不同请求对应不同的目录空间;该属性开发人员一般不使用
  • task_param.input 类的属性: 工作空间目录下的 input 目录的路径, 一般规划用来放置当前请求(用户上传)的输入文件,但由于业务原因,该功能暂时废弃
  • task_param.path_for_input() 类的方法: 返回工作空间目录下的 input 目录的路径,等价于 record.input (功能废弃)
  • task_param.output 类的属性: 工作空间目录下的 output 目录的路径, 用户点击界面的下载按钮会打包下载该目录下的所有文件
  • task_param.path_for_output() 类的方法: 返回工作空间目录下的 output 目录的路径,等价于 record.output
  • task_param.path_for_dir('log') 类的方法: 返回工作空间目录下指定名称路径,该名称的目录方法内部会创建

拼接命令相关

task_param.cmd_cache相关的方法有: 1. task_param.add() 1. task_param.clean_cache() 1. task_param.run_scripts()

相关说明详见CmdCache.