【发布时间】:2023-03-29 16:50:02
【问题描述】:
我尝试使用 Electron 为给定的 Python 代码构建 GUI。 数据流实际上是直截了当的:用户与 Electron 应用程序交互,后者向 Python API 发送请求,Python API 处理请求并发送回复。
到目前为止,一切都很好。我阅读了不同的主题和博客文章:
- ZeroRPC 解决方案:
- https://medium.com/@abulka/electron-python-4e8c807bfa5e
- https://github.com/fyears/electron-python-example
- 从 node.js 生成 Python API 作为子进程并直接通信:
- https://www.ahmedbouchefra.com/connect-python-3-electron-nodejs-build-desktop-apps/
- 这对我来说似乎不是最聪明的解决方案,因为使用 zeroRPC 或 zeroMQ 可以更轻松地更改前端架构,而无需触及后端代码。
- 使用 zeroMQ 套接字(例如独占对?)
但是在所有三个解决方案中,我都在同一点上苦苦挣扎:我必须发出异步请求/回复,因为请求处理可能需要一些时间,而在这段时间内,可能已经发生了进一步的请求。对我来说,这看起来是一种非常常见的模式,但我在 SO 上没有找到任何东西,也许我只是不知道,我到底在寻找什么。
Frontend Backend
| |
REQ1 |—————————————————————————————>|Process REQ1——--
| | |
REQ2 |—————————————————————————————>|Process REQ2 --|----—
| | | |
REP1 |<————————————————————————————-|REPLY1 <——————— |
| | |
REP2 |<————————————————————————————-|REPLY2 <———————————--
| |
在我看来,最灵活的解决方案是 3. zeroMQ,但在 website 和 Python doc 上,我发现只有最小的工作示例,发送和接收都阻塞。
谁能给我一个提示?
【问题讨论】:
标签: python sockets electron ipc zeromq