2024-05-13 10:41:30 发布
网友
在Django中使用ASGI而不是WSGI来处理HTTP请求的明显缺点是什么?
我知道ASGI用于异步任务,但它也可以通过http.*通道处理同步HTTP请求。它是比普通的WSGI慢还是与WSGI相比有不支持的特性?
http.*
另外,在同一个项目中同时提供REST API和websocket处理,您喜欢哪种方式,为什么?
我认为你会发现一个主要的缺点是ASGI服务器比较新,因此测试的更少,可能功能更少,数量更少,而且可能有一个更小的社区支持它们。然而,我使用ASGI服务器(Daphne)来处理所有事情,并且感觉websockets在用户体验方面提供了太多的东西,以至于所有事情最终都将转移到ASGI。
能够在代码中使用异步是web编程的一个主要优点。不要一个接一个地运行10个查询并等待每个查询返回,您可以同时运行10个查询,同时命中缓存并在单个线程上同时发出HTTP请求。
我没有做任何基准测试,但是在几个项目中同时使用了WSGI和ASGI,并且没有看到它们之间的性能有任何足够的差异,所以如果Django WSGI的性能对您来说是可以接受的,那么ASGI也会工作。
对于REST+websockets API,我对两者都使用ASGI。如果在项目中启用了ASGI,则没有理由使用WSGI(WSGI在ASGI上工作)。
我认为你会发现一个主要的缺点是ASGI服务器比较新,因此测试的更少,可能功能更少,数量更少,而且可能有一个更小的社区支持它们。然而,我使用ASGI服务器(Daphne)来处理所有事情,并且感觉websockets在用户体验方面提供了太多的东西,以至于所有事情最终都将转移到ASGI。
能够在代码中使用异步是web编程的一个主要优点。不要一个接一个地运行10个查询并等待每个查询返回,您可以同时运行10个查询,同时命中缓存并在单个线程上同时发出HTTP请求。
我没有做任何基准测试,但是在几个项目中同时使用了WSGI和ASGI,并且没有看到它们之间的性能有任何足够的差异,所以如果Django WSGI的性能对您来说是可以接受的,那么ASGI也会工作。
对于REST+websockets API,我对两者都使用ASGI。如果在项目中启用了ASGI,则没有理由使用WSGI(WSGI在ASGI上工作)。
相关问题 更多 >
编程相关推荐