gpt4 book ai didi

http - 流式传输 Http 请求的主体时如何处理错误

转载 作者:可可西里 更新时间:2023-11-01 15:05:30 24 4
gpt4 key购买 nike

如何处理 Http 消息中间的服务器错误?

假设我已经发送了消息的标题并且正在流式传输消息正文,遇到意外错误怎么办。

我还假设这个错误是在生成内容时引起的,而不是连接错误。

(大大)简化的代码:

// I can define any transfer encoding or header fields i need to.
send(header); // Sends the header to the Http client.

// Using an iterable instead of stream for code simplicity's sake.
Iterable<String> stream = getBodyStream();
Iterator<String> iterator = stream.iterator();

while (iterator.hasNext()) {
String string;
try {
string = iterator.next();
catch (Throwable error) { // Oops! an error generating the content.
// What do i do here? (In regards to the Http protocol)
}

send(string);
}

有没有办法告诉客户端服务器失败,应该重试或放弃连接,还是我很安全?

代码已大大简化,但我只询问协议(protocol)而不是确切的代码。

谢谢

最佳答案

应执行以下操作之一:

  1. 关闭连接(重置或正常关闭)
  2. 写一个格式错误的 block (并关闭连接),这将触发客户端错误
  3. 添加 http trailer告诉您的客户出了点问题。
  4. 更改您的更高级别协议(protocol)。您发送的最后一条数据是哈希值或长度,客户端知道要处理它。
  5. 如果您可以在开始发送之前生成内容的哈希值或长度(如果使用 http block ,则在自定义 header 中),您可以在 header 中发送它,以便您的客户知道会发生什么。

这取决于您希望客户如何处理数据(保留或丢弃)。您可能无法在客户端进行更改,因此最后一个选项将不起作用。

这里是关于不同关闭方式的一些解释。 TCP option SO_LINGER (zero) - when it's required .

关于http - 流式传输 Http 请求的主体时如何处理错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15305203/

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