30-api-task.rst 9.14 KB

任务管理接口

Note

  1. 根据运维实现方式,现在页面上是添加一个大任务(即逻辑任务,用来在UI上归聚显示,并不会在分析服务中执行, 下面会统一简称"大任务"),后台会按多个视频源分解为多个子任务(实际上在分析服务器上执行的任务),一个子任 务对应一个视频源,这就带来了大任务与子任务的状态怎么对应的问题,比如子任务4个,3个运行,一个停止,大任 务运行状态该怎么显示。
  2. 标准返回结构体格式:
{
    "ecode": 200,
    "enote": "OK"
}

任务管理

添加任务

URL: /tasks
Verb: POST
Header: Authorization: {atoken},Accept-Language: {lang_code},Content-Type:application/json

Request Body:

{
    "task_name": "",                    # 必填,任务名称
    "algo_type": "0",                   # 必填,任务算法的类型,'0':交通, '1':客流, '2':安防, '3':违停,'4':人脸
    "run_dt": "2018-12-03 10:27:30.999", # 必填,任务运行日期时间
    "play_url": "rtsp://192.168.9.155:8554//opt/data/vedio/1543548943071.264"            # 必填,网络串流
    "mtasks":[                           #任务详细配置参数
       {
         "mtask_unid": "xxxx",           # mtask任务id
         "name": "xxxx",                 # mtask任务名称
         "type": 1,                      # mtask任务类型,0 轮询任务; 1 时间段任务; 2 批量任务,非球机只支持0
         "time_interval": 5,             # 轮询任务的时间间隔,时间单位是分钟
         "start_time": "00:00:00",       # mtask开始时间
         "end_time": "22:01:20",         # mtask结束时间
         "progress": 30,                 # 输出字段,进度
         "scenes": [
            {
              "scene_unid": "xxxx",       # 场景ID
              "name": "xxxx",             # 场景名称
              "preset": 1,                # 预置位,用于球机
              "callibration": {           # 标定参数,xml格式字符串
                    "calibration": "<?xml version=\"1.0\" encoding=\"UTF-8\"?><root></root>"
              },
              "rois": [                   # roi参数,xml格式字符串
                    {
                      "roi": "<?xml version=\"1.0\" encoding=\"UTF-8\"?><root></root>"
                    },
                    {
                      "roi": "<?xml version=\"1.0\" encoding=\"UTF-8\"?><root></root>"
                    }
              ],
              "config": {                  # 算法配置参数,xml格式字符串
                    "xml": "<?xml version=\"1.0\" encoding=\"UTF-8\"?><root></root>"
              },
              "basicConfig": {                  # 算法基础配置参数,xml格式字符串
                    "xml": "<?xml version=\"1.0\" encoding=\"UTF-8\"?><root></root>"
              },
              "link_scenes": [],           # 预置位,球机专用
              "algo_type": 1,              # 必填,必须和大任务一致,算法类型,0 交通; 1 客流; 2 安防;3 违停, 4 人脸。
              "algo_args": {},             # 算法基本参数,根据algo_type而不同,参见下文。
              "is_record": 1,              # 是否录像,不用
              "is_active": 1,              # 是否有效,不用
              "vchan_refid":               # 视频通道的唯一id
              "play_urls": {               # 点播地址,不用
                    "http": "xxxx",
                    "rtsp": "xxxx"
              },
              "is_running": 1,             # 任务是否正在运行
              "status_reason": "xxxx"      # 状态原因
            },
            ...
         ]  # scenes
       }
    ],
    "store_conf_unid":  "xxxx",           # 使用的存储配置的unid
}

Response:

标准返回结构体。

任务添加说明

该添加任务的接口在后台并不直接向运维发送派发任务的命令,而是在数据库的tb_task表中新增记录。

  • source_type==pull_video_stream时:

    如果存在vchans字段,那么需要在数据库的tb_subtask表中新增记录。

  • source_type==pssull_pic_files或push_pic_files时:

    根据node_count创建子任务个数。 如果source_type==pull_pic_files,则还要填写pull_source_url字段,并存储到子任务表中。

及按每个视频源一个小任务进行拆分后的各个子任务,因为小任务还要进行ROI配置,标定配置,参数配置才能派发。 当配置完成后,点击``配置完成``按钮保存子任务配置信息,最后对大任务执行“开始”操作才真正的派发各个小任务到运维服务器。

Note

  1. 任务算法类型 ('0': 交通; '1': 客流; '2': 安防,'3': 违停) 做为字典项保存到字典服务。

Error

  1. 原型上任务类型是按上传的算法的名称来算的,但是实际上的任务的算法类型是写死的,如上面所列。

列出任务

URL: /tasks
Verb: GET
Header: Authorization: {atoken},Accept-Language: {lang_code},Content-Type:application/json
参数:
{
    "offset": 0,
    "limit": 10
}

Response:

按照create_dt降序排列。

{
    "total_num": 4,
    "offset": 0,
    "list_size": 4,
    "list_data": [
        {
          "task_id": "",
          "task_name": "",                    # 必填,任务名称
          "algo_type": "0",                   # 必填,任务算法的类型,'0':交通, '1':客流, '2':安防, '3':违停,'4':人脸
          "run_dt": "2018-12-03 10:27:30.999", # 必填,任务运行日期时间
          "play_url": "rtsp://192.168.9.155:8554//opt/data/vedio/1543548943071.264"            # 必填,网络串流
          "mtasks":[                           #任务详细配置参数
             {
               "mtask_unid": "xxxx",           # mtask任务id
               "name": "xxxx",                 # mtask任务名称
               "type": 1,                      # mtask任务类型,0 轮询任务; 1 时间段任务; 2 批量任务,非球机只支持0
               "time_interval": 5,             # 轮询任务的时间间隔,时间单位是分钟
               "start_time": "00:00:00",       # mtask开始时间
               "end_time": "22:01:20",         # mtask结束时间
               "progress": 30,                 # 输出字段,进度
               "scenes": [
                  {
                    "scene_unid": "xxxx",       # 场景ID
                    "name": "xxxx",             # 场景名称
                    "preset": 1,                # 预置位,用于球机
                    "callibration": {           # 标定参数,xml格式字符串
                          "calibration": "<?xml version=\"1.0\" encoding=\"UTF-8\"?><root></root>"
                    },
                    "rois": [                   # roi参数,xml格式字符串
                          {
                            "roi": "<?xml version=\"1.0\" encoding=\"UTF-8\"?><root></root>"
                          },
                          {
                            "roi": "<?xml version=\"1.0\" encoding=\"UTF-8\"?><root></root>"
                          }
                    ],
                    "config": {                  # 算法配置参数,xml格式字符串
                          "xml": "<?xml version=\"1.0\" encoding=\"UTF-8\"?><root></root>"
                    },
                    "basicConfig": {                  # 算法基础配置参数,xml格式字符串
                          "xml": "<?xml version=\"1.0\" encoding=\"UTF-8\"?><root></root>"
                    },
                    "link_scenes": [],           # 预置位,球机专用
                    "algo_type": 1,              # 必填,必须和大任务一致,算法类型,0 交通; 1 客流; 2 安防;3 违停, 4 人脸。
                    "algo_args": {},             # 算法基本参数,根据algo_type而不同,参见下文。
                    "is_record": 1,              # 是否录像,不用
                    "is_active": 1,              # 是否有效,不用
                    "vchan_refid":               # 视频通道的唯一id
                    "play_urls": {               # 点播地址,不用
                          "http": "xxxx",
                          "rtsp": "xxxx"
                    },
                    "is_running": 1,             # 任务是否正在运行
                    "status_reason": "xxxx"      # 状态原因
                  },
                  ...
               ]  # scenes
             }
          ],
          "store_conf_unid":  "xxxx",           # 使用的存储配置的unid
        },
        ...
    ]
}