为什么要用异步/非阻塞框架构建API?

前端之家收集整理的这篇文章主要介绍了为什么要用异步/非阻塞框架构建API?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我一直在研究 Play Framework作为帮助我构建简单API的可能候选人.然而,Django Rest Framework(DRF)也似乎是一个非常强大的内容.

据我所知,DRF不会像Play Framework那样做自己的异步(或非阻塞)框架,但是我对这是否重要也感兴趣.我一直在想的情况是通过Mandrill向用户发送电子邮件 – 我不希望我的API陷入僵局等待Mandrill API来告知电子邮件是否被发送.

因此,我认为这个问题可以总结如下:从客户的角度来看,是否有利于我通过异步/非阻塞框架构建一个API,如在DRF上播放,或者我是否缺少一点?

解决方法

我是一个Django REST框架的贡献者(和用户),所以我的观点偏向于这一点.

Django REST框架是建立在Django上的,它是Web应用程序的同步框架.如果您已经在使用像Django这样的同步框架,那么拥有同步API就不是一个问题了.

现在,只是因为它是同步的,这并不意味着一次只能处理一个请求.大多数正在处理Django应用程序的Web服务器can handle multiple requests,一些主题甚至可以做到这一点somewhat asynchronously across multiple threads.通常这并不是一个问题,因为您的Web服务器通常可以处理许多并发请求,即使其中一些阻塞.当你长久以来,阻止通话你通常不希望在API内完成 – 你应该将它委派给像CeleryResque这样的后台工作人员.

这不仅仅是Django特有的,许多相同的原理也适用于像Rails和ASP.NET MVC这样的其他同步框架.如果您有长期的请求,您通常应该将工作委派给其他进程,而不是阻止请求.通常使用202响应代码for these cases.

现在,这并不一定意味着异步框架是无用的.在运行时,如Node.js,大多数框架handle requests asynchronously.在这些语言中使用同步框架是没有意义的,所以大多数库被构建为异步的.

您所选择的内容取决于您已经使用的工具.

原文链接:https://www.f2er.com/python/186723.html

猜你在找的Python相关文章