【问题标题】:How to simultaneously query two APIs in Python?如何在 Python 中同时查询两个 API?
【发布时间】:2013-05-06 14:45:16
【问题描述】:

使用 web.py,我正在构建一个网站,通过它们的公共 API 显示来自两个第三方网站的搜索结果。不幸的是,API 发送回结果大约需要 4 秒。如果我在收到第一个 API 的答案后才查询第二个 API,这显然需要我大约 8 秒,这太长了。为了解决这个问题,我想同时向 API 发送请求,并在收到两个 API 的答复后立即继续。

我现在的问题是:如何做到这一点?

我从未使用过并行计算,但我听说过多处理和线程。我真的不知道每个人的区别或优势是什么。我也知道,例如 C++ 能够进行并行计算。因此,也可以选择编写在 C++ 中查询 API 的部分(我是 C++ 的初学者,但我想我会管理)。最后,当然可能有一些我完全忽略的选项。也许 web.py 有一些选项可以做到这一点,或者也许有专门用于做到这一点的 Python 模块?

由于只研究和理解所有这些选项会花费我很多时间,所以我想在这里向你们请教一些技巧。

那么你认为我应该选择哪一个?最重要的是:为什么?欢迎所有提示!

【问题讨论】:

  • 您确定需要同时发送吗?听起来更像是您只想能够异步发送它们。另外请考虑适当地更新您的标签,这似乎与 C++ 几乎没有关系,与多处理无关。基本的线程和/或异步将完成工作。

标签: python asynchronous multiprocessing


【解决方案1】:

您需要一个异步 HTTP 请求库。例如geventgrequests

或者,您可以使用 Python 的内置 threading 模块在多个线程中运行同步请求。

无论哪种方式,都无需使用另一种语言。

【讨论】:

  • 我刚刚快速浏览了一下 grequests,确实看起来不错。但是你知道我是否也可以发送标题(我需要发送一些授权标题)。我找不到任何关于它的东西..
  • 是的,你可以。 grequests 只是 requests 的异步包装器,它支持发送标头 - docs.python-requests.org/en/latest/user/quickstart/…requests 可以做的任何事情,grequests 也可以。
  • 谢谢!奇迹般有效!我只是在安装 grequests 时遇到了一些麻烦。造成这种情况的原因是我需要安装 libevent-dev(可能对未来的读者来说很有趣).. 干杯!
猜你喜欢
  • 2021-12-30
  • 2019-02-22
  • 1970-01-01
  • 2012-09-26
  • 1970-01-01
  • 1970-01-01
  • 2022-10-31
  • 2021-05-14
  • 1970-01-01
相关资源
最近更新 更多