使用ASGI代替WSGI的缺点

2024-05-13 10:41:30 发布

您现在位置:Python中文网/ 问答频道 /正文

在Django中使用ASGI而不是WSGI来处理HTTP请求的明显缺点是什么?

我知道ASGI用于异步任务,但它也可以通过http.*通道处理同步HTTP请求。它是比普通的WSGI慢还是与WSGI相比有不支持的特性?

另外,在同一个项目中同时提供REST API和websocket处理,您喜欢哪种方式,为什么?

  1. 不同服务器实例中的WSGI for REST+ASGI for websocket
  2. WSGI for REST+ASGI for websocket同机
  3. ASGI对两者

Tags: 项目django实例服务器restapihttpwsgi
2条回答

我认为你会发现一个主要的缺点是ASGI服务器比较新,因此测试的更少,可能功能更少,数量更少,而且可能有一个更小的社区支持它们。然而,我使用ASGI服务器(Daphne)来处理所有事情,并且感觉websockets在用户体验方面提供了太多的东西,以至于所有事情最终都将转移到ASGI。

能够在代码中使用异步是web编程的一个主要优点。不要一个接一个地运行10个查询并等待每个查询返回,您可以同时运行10个查询,同时命中缓存并在单个线程上同时发出HTTP请求。

我没有做任何基准测试,但是在几个项目中同时使用了WSGI和ASGI,并且没有看到它们之间的性能有任何足够的差异,所以如果Django WSGI的性能对您来说是可以接受的,那么ASGI也会工作。

对于REST+websockets API,我对两者都使用ASGI。如果在项目中启用了ASGI,则没有理由使用WSGI(WSGI在ASGI上工作)。

相关问题 更多 >