新闻详情

新闻详情

首页 / 资讯中心 / 详情

AWX Unified Job Stdout API 指南:format 参数、行区间截取与超大输出处理

发布时间:2026/10/20 15:48:34来源:尧图网络
AWX Unified Job Stdout API 指南:format 参数、行区间截取与超大输出处理
AWX Unified Job Stdout API 指南format 参数、行区间截取与超大输出处理【免费下载链接】awxAWX provides a web-based user interface, REST API, and task engine built on top of Ansible. It is one of the upstream projects for Red Hat Ansible Automation Platform.项目地址: https://gitcode.com/gh_mirrors/aw/awx本篇文章基于 AWX 仓库 API 文档模板 unified_job_stdout.md 展开系统讲解如何通过 HTTP GET 请求检索统一作业Unified Job的 stdout包括 7 种format输出格式的选择、start_line/end_line行区间参数、dark深色背景控制、以及超过STDOUT_MAX_BYTES_DISPLAY上限时的降级策略。读完本文你将能直接用 curl 精确拉取任意任务的输出片段并通过源码理解每种格式背后的实现原理。一、什么是 Unified Job Stdout 接口AWXRed Hat Ansible Automation Platform 的上游开源项目把「一次任务执行」抽象为 Unified Job统一作业涵盖普通作业Job、临时命令Ad Hoc Command、项目更新Project Update、库存更新Inventory Update、系统作业System Job等。每一种统一作业都提供独立的 stdout 检索端点形如/api/v2/jobs/{id}/stdout/ /api/v2/ad_hoc_commands/{id}/stdout/ /api/v2/project_updates/{id}/stdout/ /api/v2/inventory_updates/{id}/stdout/ /api/v2/system_jobs/{id}/stdout/以普通作业为例路由在 awx/api/urls/job.py 中定义为re_path(r^(?Ppk[0-9])/stdout/$, JobStdout.as_view(), namejob_stdout)其余类型项目更新、库存更新、临时命令的视图分别由 ProjectUpdateStdout、InventoryUpdateStdout、AdHocCommandStdout 提供它们都继承自同一个基类 UnifiedJobStdoutRetrieveAPIView因此所有端点的行为完全一致。向该端点发起 GET 请求即可取回任务运行期间产生的标准输出内容用于审计、排障、二次处理或下载归档。二、format 参数七种输出格式详解stdout 接口通过format查询字符串参数决定返回内容的组织形式。完整取值如下与文档模板逐条对应format 值输出类型典型用途api可浏览 APIBrowsable APIHTML浏览器中查看带样式的渲染页htmlHTML 页面浏览器中查看格式化结果txt纯文本脚本/命令行直接消费ansi含 ANSI 颜色码的纯文本保留原始终端配色jsonJSON 结构程序化解析含行范围元数据txt_download纯文本下载Content-Disposition 附件超大文件落盘ansi_download含 ANSI 颜色码的下载超大文件保留原始颜色落盘视图在 awx/api/views/init.py 中显式声明了对应的渲染器Rendererrenderer_classes [ renderers.BrowsableAPIRenderer, # api StaticHTMLRenderer, # html renderers.PlainTextRenderer, # txt renderers.AnsiTextRenderer, # ansi JSONRenderer, # json renderers.DownloadTextRenderer, # txt_download renderers.AnsiDownloadRenderer, # ansi_download ]retrieve()方法在 awx/api/views/init.py 中按request.accepted_renderer.format分派处理逻辑txt直接返回unified_job.result_stdout。注意这是「面向人」的输出模型属性在 awx/main/models/unified_jobs.py 中会同时执行escape_asciiTrue剥除 ANSI 转义与fix_escapesTrue折叠双重转义保证终端可读ansi返回unified_job.result_stdout_raw即保留原始 ANSI 颜色码与转义序列的原始输出awx/main/models/unified_jobs.py适合在支持 ANSI 的终端里看到与执行现场一致的颜色json返回{range: {start: ..., end: ..., absolute_end: ...}, content: ...}结构content默认以 UTF-8 字节返回若追加content_encodingbase64则先经 Base64 编码便于二进制安全传输txt_download / ansi_download走文件下载路径。文件名按{类型}_{pk}.txt或{类型}_{pk}.ansi.txt规则生成如job_42.txt、project_update_7.ansi.txt响应携带Content-Disposition: attachment头awx/api/views/init.py。下载模式还会把输出先写入JOBOUTPUT_ROOT下的临时文件并通过StdoutFilter过滤敏感信息避免大文件撑爆内存。2.1 常见调用示例# 纯文本剥除 ANSI 颜色码 curl -H Authorization: Bearer $TOKEN \ https://awx.example.com/api/v2/jobs/42/stdout/?formattxt # 保留 ANSI 颜色码 curl ... https://awx.example.com/api/v2/jobs/42/stdout/?formatansi # JSON 结构化输出附带行号范围 curl ... https://awx.example.com/api/v2/jobs/42/stdout/?formatjson # Base64 编码的 JSON 输出 curl ... https://awx.example.com/api/v2/jobs/42/stdout/?formatjsoncontent_encodingbase64 # 直接下载为文件 curl -OJ ... https://awx.example.com/api/v2/jobs/42/stdout/?formattxt_download三、start_line / end_line按行区间截取输出自 Ansible Tower 2.0.0 起AWX 沿用了该能力api、html、json三种格式支持start_line与end_line查询参数用于指定要检索的行号范围避免一次性传输整个任务的全部输出。# 只取第 10 行含到第 20 行不含之间的内容 curl ... https://awx.example.com/api/v2/jobs/42/stdout/?formatjsonstart_line10end_line20 # 取最后 100 行start_line 支持负数表示从末尾倒推 curl ... https://awx.example.com/api/v2/jobs/42/stdout/?formatjsonstart_line-100行为细节可从模型方法_result_stdout_raw_limited的源码awx/main/models/unified_jobs.py确认start_line省略时默认为0end_line省略时表示一直取到文件末尾end_line超过实际行数时被截断到文件总行数不会报错start_line为负数时表示「从末尾倒数」例如-100即最后 100 行返回元组(content, start_actual, end_actual, absolute_end)中absolute_end是文件的总行数供前端实现「向上/向下滚动加载更多」分页逻辑JSON 格式会把这三者放进range字段。四、dark 参数强制/禁用深色背景dark1或dark0查询参数用于控制浏览器渲染时的背景色适用于api、html、json三种浏览器型格式。视图处理逻辑awx/api/views/init.pydark_val request.query_params.get(dark, ) dark bool(dark_val and dark_val[0].lower() in (1, t, y)) content_only bool(target_format in (api, json)) dark_bg (content_only and dark) or (not content_only and (dark or not dark_val))要点值以1、t、y开头即视为开启深色背景大小写不敏感对html格式dark1强制深色dark0强制浅色未指定时默认深色对api/json格式只有显式传入dark1时才使用深色否则默认浅色因为这类返回体常被嵌入其他页面。渲染时输出经Ansi2HTMLConverter转为 HTML并套用模板 awx/api/templates/api/stdout.htmldark与content_only作为模板上下文变量传入因此深色只是前端呈现属性不影响txt/ansi等纯文本格式的内容。五、STDOUT_MAX_BYTES_DISPLAY超大输出的保护机制文档明确指出Files overSTDOUT_MAX_BYTES_DISPLAY可配置将不会在浏览器中显示请使用txt_download或ansi_download格式直接下载文件查看。默认值定义在 awx/settings/defaults.pySTDOUT_MAX_BYTES_DISPLAY 1048576 # 即 1 MiB可被数据库设置覆盖对应数据库可配置项注册于 awx/main/conf.py。当总输出超过该上限时result_stdout_raw_handle(enforce_max_bytesTrue)awx/main/models/unified_jobs.py会先通过SUM(LENGTH(stdout))聚合查询算出所有事件输出总字节数不实际取数据一旦超限立即抛出StdoutMaxBytesExceeded(total, supported)异常避免把海量数据读进内存视图捕获该异常后返回提示信息awx/api/views/init.pyStandard Output too large to display ({实际字节} bytes), only download supported for sizes over {上限} bytes.但txt_download/ansi_download走result_stdout_raw_handle(enforce_max_bytesFalse)分支不设上限直接把完整内容写盘流式返回。5.1 源码中的输出聚合方式现代 AWX 的 stdout 不再存为单一文本块而是按行切分存放在事件表main_jobevent等的stdout列中。result_stdout_raw_handle采用 PostgreSQL 原生COPY (SELECT stdout FROM ... ORDER BY start_line) TO STDOUT直接流式拼接awx/main/models/unified_jobs.py刻意绕过 Django ORM 的对象构造避免大字段反序列化导致的内存膨胀。若存在事件分区分隔还会自动查询_unpartitioned_前缀的历史分区表。对老版本升级上来的实例若main_unifiedjob.result_stdout_text中仍保留历史文本块则会优先回退使用该列awx/main/models/unified_jobs.py保证旧数据依旧可读。5.2 测试用例佐证仓库的 test_unified_jobs_stdout.py 系列测试完整覆盖了上述行为test_max_bytes_display第 189 行起对 Job、AdHocCommand、ProjectUpdate、InventoryUpdate 四类任务写入STDOUT_MAX_BYTES_DISPLAY 1字节的输出断言txt/ansi格式返回超限提示而*_download格式能返回完整内容第 205-206 行test_legacy_result_stdout_text_fallback第 212 行起验证旧版result_stdout_text文本块的兼容回退test_text_with_unicode_stdout第 261 行起验证多字节 UTF-8 内容在四种格式下均能正确往返test_unicode_with_base64_ansi第 273 行起验证jsoncontent_encodingbase64的编码行为。这些测试确认超限保护只影响「显示类」格式下载类格式永远可用这是运维侧应对超大任务输出的标准路径。六、安全与敏感信息过滤内嵌事件数据的清除视图在渲染前会用正则\x1b\[K(?:[A-Za-z0-9/]\x1b\[\dD)\x1b\[K移除嵌入 stdout 的 ANSI 序列awx/api/views/init.py模型侧_escape_ascii同时执行颜色码剥离与事件数据剥离awx/main/models/unified_jobs.py敏感 URI 脱敏txt_download/ansi_download下载流通过StdoutFilterUriCleaner.remove_sensitive过滤可能泄露的凭据型 URIresult_stdout_raw_limited在redact_sensitiveTrue时同样会调用UriCleaner.remove_sensitiveawx/main/models/unified_jobs.py。项目更新类任务可能包含 SCM URL 凭据还会额外注册 URI 清洗器awx/api/views/init.pyWindows 换行归一化\r\n在落盘或内存缓冲区中统一替换为\nawx/main/models/unified_jobs.py保证跨平台内容一致。七、实践建议日常排障优先使用formatansi在终端查看颜色码能直观区分正常输出与告警/错误需要复制粘贴到工单时改用formattxt程序集成使用formatjson解析range字段实现增量拉取——先取尾部若干行absolute_end变化后再拉新增片段避免每次全量传输超大任务当收到Standard Output too large to display提示时改走formattxt_download或ansi_download落盘分析该上限可通过数据库设置覆盖STDOUT_MAX_BYTES_DISPLAY调大默认 1048576 字节但需权衡内存与响应速度权限注意stdout 端点受统一作业详情Retrieve权限约束与对应任务的查看权限一致需使用具备权限的认证凭据访问。以上行为均可在当前仓库的 api 模板、视图实现、模型实现 与功能测试中逐一核对可作为二次开发或排障时的第一手参考。【免费下载链接】awxAWX provides a web-based user interface, REST API, and task engine built on top of Ansible. It is one of the upstream projects for Red Hat Ansible Automation Platform.项目地址: https://gitcode.com/gh_mirrors/aw/awx创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
网站建设高端定制企业官网
RELATED

相关资讯

更多精彩内容,欢迎继续阅读

较早相关资讯

最新相关资讯

【外设】之大彩串口显示屏 2026/10/19 18:07:56

【外设】之大彩串口显示屏

大彩串口屏初步使用 1 .官网下载 STM32 屏幕 GUI 设计资料 http://www.gz-dc.com/category/typeid/4112 找到 STM32 Keil 工程,移植相关代码因项目而异进行移植,由于项目简单,本人只对用到的指令接口进行修改。 比如:注意事项&…

阅读更多 →
无法下载Windows系统iso文件 2026/10/19 18:08:04

无法下载Windows系统iso文件

当我遇到这个问题的时候,我打开了一个网站: 登录 然后我打算下载的时候: 突然那个官方的连接就可以下载了:

阅读更多 →
【清华代码熊】DeepSeek V4.1 Flash 后训练详解 2026/10/19 18:07:53

【清华代码熊】DeepSeek V4.1 Flash 后训练详解

📌 上期解析了 DeepSeek V4.1 Flash 模型架构改进,本期解析 DeepSeek V4.1 Flash 预训练/后训练技术: 🌟 预训练:45T 文本 多模态混合语料、直接训练 sparse attention(取消 DeepSeek V4 的 dense 冷启动&…

阅读更多 →
Shuffle-R1: Efficient RL framework for Multimodal Large Language Models via Data-centric Dynamic ... 2026/10/20 7:03:52

Shuffle-R1: Efficient RL framework for Multimodal Large Language Models via Data-centric Dynamic ...

文章主要内容和创新点 主要内容 本文聚焦于多模态大语言模型(MLLM)强化学习(RL)训练中的效率问题,提出了一个名为Shuffle-R1的框架。研究发现,当前RL训练存在两个关键缺陷: 优势值坍缩(Advantage Collapsing):批次中大多数优势值集中在零附近,导致有效梯度信号被淹…

阅读更多 →
PRvL: Quantifying the Capabilities and Risks of Large Language Models for PII Redaction 2026/10/19 18:07:45

PRvL: Quantifying the Capabilities and Risks of Large Language Models for PII Redaction

一、文章主要内容总结 本文聚焦于利用大型语言模型(LLMs)实现个人身份信息(PII)脱敏的研究,旨在解决传统脱敏方法(如基于规则的系统、领域特定命名实体识别(NER)模型)泛化能力差、跨格式/跨语境适应性弱的问题。 研究通过全面评估多种LLM架构(包括密集型LLM(D-LLM…

阅读更多 →
LLaVA-RE: Binary Image-Text Relevancy Evaluation with Multimodal Large Language Model 2026/10/20 6:21:45

LLaVA-RE: Binary Image-Text Relevancy Evaluation with Multimodal Large Language Model

文章主要内容和创新点 主要内容 本文聚焦于二进制图像-文本相关性评估任务(判断图像与文本“相关”或“不相关”),针对该任务中文本格式多样、相关性定义随场景变化等挑战,提出了基于多模态大语言模型(MLLM)的解决方案LLaVA-RE。 模型设计:LLaVA-RE基于LLaVA 1.5架构,…

阅读更多 →

今日资讯

本周资讯

本月资讯

看完文章仍有疑问?

联系尧图顾问,获取一对一建站咨询

立即免费咨询 📞 400-888-8888
📞 ✉