#websocket-server #python #pyo3 #built #module #natively

quicksocket

一个简单的、原生并行的 Python WebSocket 服务器模块,使用 Rust、tokio 和 pyo3 构建

5 个版本 (1 个稳定版)

1.0.0 2021 年 8 月 18 日
0.1.3 2021 年 6 月 24 日
0.1.2 2021 年 6 月 16 日
0.1.1 2021 年 4 月 22 日
0.1.0 2021 年 4 月 21 日

#179WebSocket

MIT 许可证

37KB
454

quicksocket

MIT licensed Apache v2 licensed Actions Status PyPI Crates.io

使用 Rust、tokiotokio-tungstenite 以及 pyo3 构建的一个简单的 WebSocket 服务器。支持 Windows、macOS 和 Linux。

从 1.0.0 版本开始更稳定,但功能仍然有限。你只能得到一个服务器(需要添加一个 合适的 服务器类),并且功能相对较少。

pip install quicksocket

Quicksocket 快速入门

quicksocket.server.Server 为从 quicksocket 模块直接使用的静态方法提供了类型注解。

import quicksocket

# Start the server on whatever port you want.
server = quicksocket.server.Server()
server.start(port=59994)

# You have to poll the server, which runs on a native Rust thread.
# 
# No need for `asyncio` here! Do it however you want.
# But you'll need some sort of loop for this.
new_clients = server.drain_new_client_events()
cli_msgs = server.drain_client_messages()

# Send messages in batches for better efficiency. Often, python's "threading" is a performance bottleneck.
message = "Hello, world!"
another_message = "Yes, hello!"
server.send_messages([message, another_message])

# Check if the server is running.
is_server_running = server.is_running()

# Stop the server.
server.stop()

有点冗长,仍在稳定化中。

从 1.0 版本开始,初始连接端口可配置,只需将端口传递给 start 方法即可。

Quicksocket 的代码最初是为与 Ultraleap 的 Web Visualizer 项目一起使用而设计的,因此它旨在用于控制台 Python 可视化服务器,并利用普通的 println! 进行日志记录。即将推出:适当的 env 日志记录。

构建

你需要 Rust 和访问 3.6 或更高版本的 python.exe。

你还需要 OpenSSL。请参阅 Ubuntu 部分,了解 Ubuntu 上的安装详情。在 Windows 上配置 OpenSSL 稍微复杂。您可以使用 Chocolatey 或 vcpkg,或下载 OpenSSL 的二进制分发版。您可能需要将 $Env:OPENSSL_DIR(PowerShell 语法)设置为您的安装目录,以便在 Windows 构建会话中使用 Chocolatey、二进制安装,或者如果 vcpkg 没有在您的会话中激活。macOS 应该默认有它。

为您的 Python/OS 组合构建 wheel

pip install maturin
maturin build

如果您只想为您的 OS 构建原始的 .pyd 或类似的 Python 原生模块文件,您只需使用 cargo 构建。

cargo build --release

为 Python 3.6 到 3.9 版本提供了 Windows、macOS 和 Linux 的 CI。请查看“操作”选项卡。

Ubuntu

确保您已安装 libssl 和 libpython

sudo apt-get install libssl-dev
sudo apt-get install libpython3-dev

如果在构建 pyo3 时遇到错误,您可能需要检查它是否能找到您的 Python 以及任何相关的 Python 开发依赖项:[链接](https://pyo3.rs/v0.10.1/building_and_distribution.html)

旧版构建说明

针对特定 Python 版本的构建

这仅适用于通过 cargo 构建。 maturin 可能更可靠。

如果您正在针对特定的 Python 版本,或者您的 PATH 中没有 Python,您可以设置 PYTHON_SYS_EXECUTABLE 为您机器上该版本的 Python 可执行文件。

例如,在 Windows 的 Git Bash 中

PYTHON_SYS_EXECUTABLE=/c/my/path/to/python.exe cargo build --release

待办事项

通过 GitHub Pages 的实用 HTML

可以通过 GitHub Pages 提供此功能,以便新用户轻松测试他们的服务器使用情况... [链接](https://github.com/nickjbenson/quicksocket/blob/main/archive/examples/wip01_basic_websocket_client.html)

依赖项

~12–23MB
~338K SLoC