docs: def tasks(self, path, postmap=None, **params):
          """
          Return the task status.  This delves into the operating structures
          and picks out information about tasks that is useful for status
          monitoring.
  
          For each task, the response includes:
  
            control   - The active task control value, whoich may have been
                    changed via the management interface.
            count     - The number of processes configured to run for the
                    task.  This does not necessarily correspond to the
                    process list below if tasks are failing or the
                    control is set to "off".
            processes - A list of the running processes for the task.
                    Each entry may contain:
                      pid     - The process ID of the process currently
                                running in this slot.  If "pid" is not
                            present, no process is running in the
                            slot.
                      started - The ISO8601 date stamp when the
                                process started.
                      started_t   - The Unix time_t of when the process
                                started.
                      status  - The exit code for the last time this
                                process exited.
                      exit    - The status translated for human
                                consumption.
  
          Not that the status and exit values are not cleared if the process
          has successfully restarted.
  
          Supports standard options.
      """
          q = httpd.merge_query(path, postmap)
  
          ans = {}
          for name, tinfo in self._legion._tasknames.items():
              t = tinfo[0]
              info = {}
              conf = t.get_config()
              if conf:
                  info['control'] = t._get(conf.get('control'))
                  info['count'] = t._get(conf.get('count'), default=1)
                  info['processes'] = []
                  for p in t._proc_state:
                      if p is None: continue
                      proc = {}
                      if p.pid is not None:
                          proc['pid'] = p.pid
                      if p.exit_code is not None:
                          proc['status'] = p.exit_code
                          proc['exit'] = utils.statusfmt(p.exit_code)
                      if p.started is not None:
                          proc['started_t'] = p.started
                          proc['started'] = utils.time2iso(p.started)
                      if p.exited is not None:
                          proc['exited_t'] = p.exited
                          proc['exited'] = utils.time2iso(p.exited)
                      if p.pending_sig is not None:                                               # pragma: no cover
                          proc['exit_pending'] = True
                      info['processes'].append(proc)
              ans[name] = info
  
          return self._format(ans, q)