python - 使用 websockets 是 IPC 的好主意吗?

标签 python node.js websocket ipc

我有一个“主”进程和几个“工作”进程,我想在它们之间传递一些消息。消息可以是二进制 blob,但每个都有固定的大小。我想要一个抽象,它可以为我整齐地缓冲和分离每条消息。我不想在 TCP 之上发明自己的协议(protocol),而且我找不到任何可跨语言移植的简单+轻量级解决方案。 (截至目前,“主”进程是一个 Node.js 服务器,“工作”进程计划在 Python 中。)

最佳答案

这个问题纯粹是基于意见,但我还是会试一试:

WebSocket 在我看来是一个大材小用。首先,为了使 WebSockets 工作,您必须实现 HTTP(或至少它的某种基本形式)来进行握手。如果你这样做,那么最好坚持使用“普通”HTTP,除非有理由进行全双工通信。到处都有很多工具可以通过(unix 域)套接字处理 HTTP。

但这也可能有点矫枉过正。如果您有 worker ,那么我认为性能很重要。最简单且(可能)最有效的解决方案是以下协议(protocol):每条消息以 1-8(选择一个数字)字节开始,这决定了后续内容的大小。内容是您想要的任何内容,例如 Protocol Buffer 消息。例如,如果你想发送 foo,那么你发送 0x03 0x00 0x66 0x6f 0x6f。前两个字节对应内容的大小(3),后三个字节对应foo

关于python - 使用 websockets 是 IPC 的好主意吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46571076/

相关文章:

java - Server EndPoint for WebSocket Java API 中的 volatile 变量?

Python pip 安装 mysql-connector-python 2.0.1 失败

c++ - Node.js 6 插件将 Buffer.from() 转换为 const UInt8*

python - 装饰递归函数

javascript - python: 无法打开文件 'scriptbootstrap.py'

node.js - Mongodb 时间戳非常不准确 - mongoose

c++ - HTML5 桌面应用程序和 C++ 业务逻辑

spring - 将 Java WebSockets (JSR-356) 与 SpringBoot 集成

python - 始终将数字四舍五入到更大的一边

python - 在 python 中实现多个构造函数的最佳实践