parser

Написать ответ на текущее сообщение

 

 
   команды управления поиском

file::exec более, чем достаточно...

Sumo 06.08 18:06 / 06.08 18:21

... конструктор возвращает объект file с stdout и stderr. Проверяете статус и если он не равен нулю, то выбрасываете, например, эксепшн в Парсере. Пример:
@tabulate[aTable;aOptions][locals]
  $lTable[^aTable.csv-string[
    $.separator[^#09]
    $.encloser[]
  ]]
  $lArgs[^table::create{arg}]
  ^lArgs.append{--header}
  ^lArgs.append{--sep=\t}
  ^lArgs.append{--format=^if(def $aOptions.format){$aOptions.format}{simple}}

  $result[^file::exec[../path/to/tabulate;$.stdin[$lTable];$lArgs]]
  ^if($result.status != 0){
    ^throw[tabulate.fail;Tabulate was failed ($result.status);$result.stdout / $result.stderr]
  }
  $result[$result.text]
В Питоне несложно перенести логирование в stdout, но этого делать не требуется. Парсер прекрасно вернет и статус и оба стандартных потока.

p.s. Про запуск aiohttp написано в документации — https://docs.aiohttp.org/en/stable/deployment.html, запускать его из под Парсера не получится. :)