使用不稳定的API的Python技巧

时间:2019-01-25 12:14:20

标签: python api concurrency python-requests

我的应用正在使用第三方API。它定期在多个端点轮询该API。根据用户与应用程序的互动,In还会对API进行一些其他调用。 API非常慢,大多数请求会花一秒钟的时间。 API非常不稳定-超时很常见,500错误很常见,会话密钥经常随机失效(即使定期调用定义的“ keep_alive”端点)。无法选择使用其他API

处理这样的API的最佳实践是什么?

如何在API级别上禁用对此requests的并发请求。因此,如果一个请求正在等待响应-第二个请求没有启动?这应该在“每个域”的基础上完成,对其他域的其他请求仍应同时进行。

是否有其他设置可以用requests切换,以便更轻松地处理这样的API

2 个答案:

答案 0 :(得分:2)

如果您的主要问题是在多线程(或多进程)应用程序中序列化对该API的调用,则一种简单的方法是将其包装到一个新模块中,并通常在该模块中使用锁定。

如果不同的客户端可以同时使用Web API,并且出于性能原因需要序列化请求,则可以想象有一个专用的序列化代理。只需在代理中使用上述方法即可。

答案 1 :(得分:1)

处理此类API的最佳做法是什么?

在SRE中,我们几乎总是假设API永远不会被信任,因此,有许多模式可能会有所帮助:

参考文献: