从Python使用REST API:我需要一个异步库吗?

时间:2014-05-14 14:35:22

标签: python rest

我有一个REST API,现在我想创建一个仅使用此API和主数据源的网站。系统是分布式的:REST API位于一组计算机上,站点位于另一台计算机上。

我希望有很多负载,所以我希望尽可能提高请求。

我是否需要一些异步HTTP请求库或任何HTTP客户端库都可以使用?

API使用Flask完成,网站也将使用Flask和Jinja作为模板引擎构建。

3 个答案:

答案 0 :(得分:2)

您可以使用geventFlask从正常的同步库中获取异步I / O.请参阅this question,了解有人获得帮助的示例。

您还可以在gunicorn后面运行Flask,它支持生成多个工作线程(线程,进程或greenlet)以处理并发请求。如果您采用这种方法,Flask将保持完全同步,并且gunicorn将处理创建多个Flask实例以处理并发请求。

答案 1 :(得分:1)

开始简单并使用方式,这似乎很容易为您使用。考虑稍后在需要时进行优化。

如果您每秒有数千个请求,则使用异步库会起到帮助作用。很快你就可能遇到与数据库相关的性能问题(如果你使用它),这是不能通过异步魔法来解决的。

答案 2 :(得分:0)

实际上您的API位于单独的计算机上。即使您使客户端调用异步,它也不会对服务器产生任何影响。通过使您的调用异步,客户端中的线程将不会等待响应。当呼叫是同步/异步时,您的服务器将作出相同的反应。

如果您想让您的呼叫异步,请检查http://stackandqueue.com/?p=57。它使用unirest来同时获取和发布异步调用