【问题标题】:What's the difference/compatibility between aiohttp and websockets?aiohttp 和 websockets 之间有什么区别/兼容性?
【发布时间】:2016-05-16 14:41:03
【问题描述】:

aiohttp 的 websocket 支持(即WebSocketResponse)和websockets(都提供异步支持)有什么区别?可以混用吗?

【问题讨论】:

  • 你可以混合使用它们,但你有什么理由不只是想使用 aiohttp 的内置 websockets?
  • 两者是在 PEP 3156 中引入的 Python 的异步 I/O 支持之上,所以我认为性能非常相似
  • autobhan 似乎也是一种选择。
  • @Rhangaun 我建议不要在高速公路上浪费时间。如果您的任务很简单,只需使用websockets。 Autobahn 更难调试,也更复杂,而且在大多数情况下可能是矫枉过正。

标签: python websocket python-asyncio aiohttp


【解决方案1】:

它们是由不同的人维护的两个不同的库。两者都建立在asyncio 之上。

websockets旨在成为一个简单易用的库来实现websockets客户端和服务器,主要由single developer维护。另一方面,aiohttp 是由bigger team 维护的一个相当大的库,它不仅提供 websockets,而且顾名思义,还提供 HTTP 功能。它的某些功能与flask 和requests 的功能重叠,但采用异步方式。

就大小而言,websockets 约为 4k LOC,而aiohttp 约为 40k LOC。如果您只需要一个简单易用的 websockets 客户端,请选择websockets。如果您已经在使用 aiohttp 并且需要 websockets 功能,请使用 aiohttp 提供的功能。我认为混合它们没有意义。

【讨论】:

    【解决方案2】:

    注意一个可能会迫使需要在 Debian 8 中支持系统 Python 的人做出选择的细节:aiohttp 将其 minimum supported version 设置为 Python 3.5.3(这是 Debian 9 中的系统 Python 版本)。

    虽然aiohttp 的人有充分的理由做出该决定,但websockets 中较小的功能集允许该项目在 Debian 8 中保持对 Python 3.4.x 系统 Python 的支持,尽管您自己进行了一些调整与 Python 3.4 兼容的应用程序代码:https://websockets.readthedocs.io/en/stable/intro.html#python-lt-36

    【讨论】:

      猜你喜欢
      • 2012-05-26
      • 2011-05-26
      • 2015-04-27
      • 1970-01-01
      • 2011-03-10
      • 2018-06-12
      • 2014-09-11
      • 2018-10-08
      相关资源
      最近更新 更多