Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 使用ASGI代替WSGI的缺点_Python_Django_Django Channels - Fatal编程技术网

Python 使用ASGI代替WSGI的缺点

Python 使用ASGI代替WSGI的缺点,python,django,django-channels,Python,Django,Django Channels,一般来说,在Django中使用ASGI而不是WSGI来处理HTTP请求有什么明显的缺点 我知道ASGI用于异步任务,但它也可以通过HTTP.*通道处理同步HTTP请求。它是否比普通WSGI慢,或者与WSGI相比是否有任何不受支持的特性 另外,为了在同一个项目中同时提供RESTAPI和websocket处理,您更喜欢哪种方式?为什么 用于REST的WSGI+用于不同服务器实例中websocket的ASGI REST的WSGI+同一机器中websocket的ASGI 两者的ASGI 我没有做任何基准

一般来说,在Django中使用ASGI而不是WSGI来处理HTTP请求有什么明显的缺点

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

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

  • 用于REST的WSGI+用于不同服务器实例中websocket的ASGI
  • REST的WSGI+同一机器中websocket的ASGI
  • 两者的ASGI

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


    对于REST+websockets API,我使用了ASGI来实现这两个功能。如果您的项目中启用了ASGI,那么就没有理由使用WSGI(WSGI比ASGI更有效)。

    我认为您会发现一个主要的缺点是ASGI服务器更新,因此测试更少,可能功能更少,数量更少,并且背后可能有一个更小的社区。然而,我使用ASGI服务器(Daphne)处理所有事情,并且感觉websockets提供了如此多的用户体验,以至于所有事情最终都将转移到ASGI

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

    具有良好的ASGI优势