1

我正在编写一段使用Box.com Python SDK的代码。SDK 根据API 文档使用 requests 模块与 Box.com 进行通信。出于我的目的,我需要连续发出几个 GET 和 POST 请求,其中一些可以用于传输文件。我遇到的问题是:

  • 在 Linux(Ubuntu 13.10)上,每个请求都需要相对较长的时间(5 到 15 秒)才能通过,尽管文件传输的传输速度在我的网络连接环境中符合预期。
  • 在 Windows 8.1 上,运行完全相同的代码,请求通过的速度非常快(亚秒级)。

在这两个平台上,我都使用相同版本的 iPython(1.1.0)和 Python 2.7 下的请求模块(1.2.3)。这对我来说尤其成问题,因为我正在处理的代码最终将在 Linux 机器上实现。

这个问题有人遇到过吗?我很想听听任何人对这个问题可能有什么想法。我还没有在不同的 Linux 安装上尝试过,看看它是否是特定设置的问题。

谢谢。

编辑 1

因此,我决定使用虚拟机进行检查。在 Windows 下使用相同的 Debian 虚拟机,所有响应都很快,但在 Ubuntu 下它们很慢。然后我制作了一个 Ubuntu 12.04 live USB 并在上面运行代码,那里的响应也很快。

所以,一般来说,它不是 Python 或 Linux,而是我的特定安装,我不知道如何诊断问题:(

4

1 回答 1

3

当您的代码发出 API 请求时,使用诸如wireshark(需要sudo在大多数发行版上运行)之类的工具记录各个网络数据包,以确定需要这么长时间。

我的猜测是以下可能性最有可能:

  1. 由于某种原因,您的 Ubuntu 安装选择了错误的 DNS 服务器列表,并且 DNS 查找超时。
  2. IPv6 问题(也可能是 DNS 问题)。禁用 IPv6。
于 2013-12-29T18:22:49.743 回答