gpt4 book ai didi

go - 在 docker exec 响应开始时解释并删除无用的字节

转载 作者:IT王子 更新时间:2023-10-29 01:54:18 26 4
gpt4 key购买 nike

我正在运行 docker api 函数:

func (cli *Client) ContainerExecAttach(ctx context.Context, execID string, config types.ExecConfig) (types.HijackedResponse, error)

当我使用内置的 bufio 阅读器读取响应时:

line, _, err := resp.Reader.ReadLine()

我没有收到任何错误,但如果我尝试将字节转换为字符串,应用程序就会崩溃 - 有问题的应用程序是一个 Windows 服务,我认为正因为如此,我正在努力从中找出错误。

我现在已经设法使用(记录到事件查看器)查看输出:

logger.Infof("res: %q", line)

输出结果是:

res: "\x01\x00\x00\x00\x00\x00\x00X{\"updating\":false,\"scanning\":false,\"progress\":0,\"discovering\":false,\"registered\":false}"

现在,我期待 json,但 funky 前缀是最不受欢迎的,知道这些字节是什么以及它们为什么存在吗?我希望这会告诉我的下一个问题;删除它们或首先不接收它们的最干净的方法是什么?

我目前正在按固定长度修剪字节,但我认为我需要做一些更复杂的事情。我正在考虑向左修剪这些字节:\x01 \x00 但不确定我是否应该期待任何其他字节

最佳答案

您返回的 HTTP 响应是记录在案的 Docker 流格式 here .

您应该考虑使用 github.com/docker/docker/pkg/stdcopy.StdCopy将流多路分解为 stdout/stderr 的函数。

关于go - 在 docker exec 响应开始时解释并删除无用的字节,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46478169/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com