gpt4 book ai didi

python-3.x - 目前可用于在 python3 上使用 flask 的 websockets 的最佳选择

转载 作者:行者123 更新时间:2023-12-03 15:36:24 26 4
gpt4 key购买 nike

关闭。这个问题不符合Stack Overflow guidelines .它目前不接受答案。












想改进这个问题?将问题更新为 on-topic对于堆栈溢出。

6年前关闭。




Improve this question




目前我看到以下库可用于将 websockets 与 flask 一起使用:

  • flask-sockets (可能已过时)
  • flask-SocketIO
  • gevent-websockets (以上2个靠这个)

  • However gevent-websockets is not yet python3 compatible(atleast it is not install-able via pip). Which makes the other 2 unusable as well.



    有没有其他方法可以将 websockets 与 flask 一起使用?还是 Tornado 是最好的选择?

    最佳答案

    首先要注意 Flask-SocketIO 与其他两个不同。它包装了 Socket.IO 协议(protocol),而不是原始的 WebSocket。这使它能够为不支持 WebSocket 协议(protocol)的客户端支持使用 HTTP 长轮询模拟的类似 WebSocket 的接口(interface)。

    说到 Flask-SocketIO,请注意这个扩展即将进行大修。

    当前的官方版本(0.6)依赖于 gevent、gevent-socketio 和 gevent-websocket。不幸的是,gevent-socketio 作为一个项目早已死去,并且停留在一个非常旧版本的 Socket.IO 协议(protocol)上,这迫使您使用一个古老的 Javascript 客户端。

    即将推出的 Flask-SocketIO 版本 1.0 是一个完全重写的版本,大部分与 0.6 版本兼容,但它支持 Python 2 和 Python 3,并采用允许将不同机制用于网络和并发的设计。 0.6 版的 gevent-socketio 依赖项被两个名为 python-socketio 的新包替换和 python-engineio ,它实现了当前版本的 Socket.IO 协议(protocol),并支持所有官方的 Socket.IO 客户端(Javascript、Swift 和 C++)。

    至于低级依赖关系,您基本上有三个选择:

  • 小事件

    Eventlet 是迄今为止 Py2 和 Py3 上性能最高、最稳定的选项。 WebSocket 支持是 eventlet 的原生支持,因此只需在您的 virtualenv 中安装 eventlet 即可使 Flask-SocketIO 以最佳配置工作。
  • gevent 和 gevent-websocket

    如果出于任何原因您更喜欢 gevent,那也可以,但在我的测试中,它的性能不如 eventlet。如果您想在使用 gevent 时访问 WebSocket,那么您还需要安装包 gevent-websocket。 gevent 和 gevent-websocket 都已移植到 Python 3,但都太新了。
  • Werkzeug(或任何其他多线程 WSGI 兼容服务器)

    你也可以使用 Flask 自己的网络服务器。在这种模式下,扩展只在长轮询模式下工作。与其他两个相比,性能显然很糟糕,但是对于开发和调试来说,能够让所有东西都工作而不必运行 eventlet 或 gevent 是很好的,因为它们带来了所有的复杂性。

  • 截至今天(2015 年 10 月 4 日),新的 Flask-SocketIO 扩展有一个功能齐全的 beta 版本。正式版本即将发布。您可以使用以下命令安装 beta 版本:
    pip install flask-socketio==1.0b1

    代码在 git repo 的 1.0 分支上可用: https://github.com/miguelgrinberg/Flask-SocketIO/tree/v1.0 .

    免责声明:我确信这已经很清楚了,但以防万一,请注意我是 Flask-SocketIO、python-socketio 和 python-engineio 的作者。

    关于python-3.x - 目前可用于在 python3 上使用 flask 的 websockets 的最佳选择,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32935877/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com