我尝试使用Electron为给定的Python代码构建GUI界面。
数据流实际上很简单:用户与Electron应用程序交互,该应用程序向Python API发送请求,API处理请求并发送回复。
到目前为止,一切都很好。我阅读了不同的线程和博客文章:
1. ZeroRPC解决方案:
我认为最灵活的解决方案是使用3. zeroMQ,但在网站和Python文档上,我只找到了最小的工作示例,其中发送和接收都是阻塞的。
有人可以给我一些提示吗?
到目前为止,一切都很好。我阅读了不同的线程和博客文章:
1. 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,但在网站和Python文档上,我只找到了最小的工作示例,其中发送和接收都是阻塞的。
有人可以给我一些提示吗?