这里API批量地理编码下载流API

问题描述 投票:0回答:1

我们正在使用 Here 地图的批量地理编码 api,当下载流中的未压缩结果时,我们希望直接进一步重新处理结果。

一段时间后(大约 18 分钟),我们收到一个远程协议错误“对等关闭连接而不发送完整的消息正文(不完整的分块读取)”(使用带有异步客户端和 Stream.aiter_lines 的 python httpx 库,因此使用了一些特定的错误消息也许)。

18 分钟似乎是在这里 api 端配置的一个奇怪的超时,那么我在这里看到了什么?只是一个小嗝嗝?我们这边出了什么问题吗?

感谢您的帮助

here-api geocoding
1个回答
0
投票

错误消息“对等关闭连接而没有发送完整的消息正文(不完整的分块读取)”通常表示服务器(或某些中介)在发送完整响应之前关闭了连接。发生这种情况的原因有多种,并且故障排除通常需要结合检查服务器日志、客户端日志以及可能的任何中介(如代理或负载平衡器)。

以下是一些可帮助您解决问题的步骤和注意事项:

  1. 服务器端问题

    • 检查服务器日志,了解问题发生时是否有任何错误或警告。
    • 确保服务器没有遇到高负载,这可能会导致其过早终止连接。
    • 如果您可以控制服务器,您可能需要暂时增加日志记录的详细程度以捕获有关问题的更详细信息。
  2. 超时

    • 许多 HTTP 客户端的默认超时对于某些操作来说可能太短,特别是当它们涉及长轮询或流时。考虑增加客户端的超时时间。
    • 检查服务器端或任何可能关闭连接的中介(如代理或负载均衡器)是否设置了超时。
  3. 中介:

    • 如果客户端和服务器之间存在代理、负载均衡器或任何其他中介,请检查其日志和配置。有时,这些中介有自己的超时设置,或者可能被配置为在某些条件下关闭连接。
  4. 保持活动标头

    • 确保服务器支持 HTTP Keep-Alive 并且不会过早关闭连接。
    • 如果您正在流式传输数据,请考虑定期发送心跳或 ping 消息以保持连接处于活动状态。
  5. 分块传输编码:

    • 错误消息提到“不完整的分块读取”,这表明服务器正在使用分块传输编码。确保服务器正确格式化分块响应。
    • 如果可能,捕获原始 HTTP 响应以查看分块编码是否存在问题。
  6. 客户端日志记录:

    • 增加
      httpx
      库的日志记录详细程度,以捕获有关请求和响应的更多详细信息。
    • 考虑使用 Wireshark 或 tcpdump 等工具来捕获客户端和服务器之间的网络流量。这可以帮助确定问题是否与服务器关闭连接或其他原因有关。
  7. 网络问题

    • 间歇性网络问题可能会导致连接中断。检查客户端和服务器之间是否存在任何与网络相关的问题。
    • 如果客户端和服务器位于不同网络或被公共互联网分开,请考虑在更稳定的网络上测试连接,以排除网络不稳定的情况。
  8. 在不同环境中重现:

    • 尝试在不同的环境(例如本地开发计算机)中重现问题。这可以帮助确定问题是否特定于环境。
  9. 库或框架:

    • 确保您使用的是最新版本的
      httpx
      库。有时,更新库可以解决已知问题。
    • 检查您正在使用的
      httpx
      库的版本是否存在任何可能与此错误相关的已知问题。
  10. 使用不同的客户端进行测试

  • 要确定问题是否特定于
    httpx
    库,请考虑使用不同的 HTTP 客户端进行测试,例如
    requests
    (用于同步调用)或其他异步客户端。

如果您已完成这些步骤但仍然遇到问题,请提供有关您的设置、代码以及发生错误的确切情况的更具体详细信息,可以帮助进一步缩小问题范围。

© www.soinside.com 2019 - 2024. All rights reserved.