TaskContainer

class deepfos.lib.subtask.TaskContainer(args, task_name_tmpl='Task - {counter:03}', swallow_exc=True)

创建子任务容器

将提供的执行参数包装为当前脚本的子任务,在循环的不同时刻更新状态

参数
  • args (Iterable[Any]) – 执行参数

  • task_name_tmpl (Optional[str]) – 任务名模板,支持替换的字段为counter(自增任务编号) 和arg(任务使用的参数),默认以 Task-{counter:03} 格式产生

  • swallow_exc (Optional[bool]) – 在任务出现异常时是否忽略(不中断程序执行)

注解

  • 在循环开始前,基于此迭代方法创建并初始化所有子任务,状态为“等待”

  • 在每次循环开始时,更新当前子任务状态为“运行中”

  • 结束时,视结果及是否忽略异常(swallow_exc)更新状态为“成功”或“失败”

示例

例如原先有如下代码结构:

for arg in range(10):
    do_something(arg)

如果希望每次循环能作为子任务在作业管理中查看, 可以对代码作如下修改:

for task in TaskContainer(range(10)):
    with task.get_arg() as arg:
        do_something(arg)