【问题标题】:Disadvantages of using ASGI instead of WSGI [closed]使用 ASGI 而不是 WSGI 的缺点 [关闭]
【发布时间】:2018-03-05 07:47:27
【问题描述】:

一般来说,在 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

【问题讨论】:

标签: python django django-channels


【解决方案1】:

我认为您会发现的一个主要缺点是 ASGI 服务器较新,因此测试较少,功能可能较少,数量较少,并且可能拥有较小的社区。但是,我使用 ASGI 服务器 (Daphne) 处理所有事情,并且觉得 websockets 在用户体验方面提供了如此多的东西,最终一切都将转向 ASGI。

能够在代码中使用 asyncio 是 Web 编程的一大优势。您可以同时运行 10 个查询,而不是一个接一个地运行 10 个查询并等待每个查询返回,同时访问缓存并在单个线程上同时发出 HTTP 请求。

【讨论】:

    【解决方案2】:

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

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

    【讨论】:

      猜你喜欢
      • 2021-01-05
      • 1970-01-01
      • 1970-01-01
      • 2014-01-19
      • 2019-10-16
      • 2012-02-24
      • 2011-04-01
      • 2017-09-30
      • 2012-08-02
      相关资源
      最近更新 更多