Python 中用于发布的简单 websocket 服务器
Simple websocket server in Python for publishing
我在 Python 中有一个 运行 CLI 应用程序,它使用线程来执行一些工作程序。现在我正在为这个应用程序使用电子编写一个 GUI。对于简单的 requests/responses,我使用 gRPC
在 Python 应用程序和 GUI 之间进行通信。
然而,我正在努力寻找一种合适的发布机制来将数据推送到 GUI:gRPC
s 集成流式传输将无法工作,因为它使用生成器;正如已经提到的,我的较长的阻塞任务是使用线程(threading.Thread
的子类)执行的。我也想从这些线程中发出某些事件(例如,进度)。
然后我找到了 Flasks
SocketIO 实现,但是,这是一个阻塞执行,因此并不真正适合我的想法 - 我必须再次执行两个进程(Flask和我的 CLI 应用程序)...
我发现的另一个包是 websockets
,但我无法理解如何实现他们在 patterns 中提到的这个 producer()
功能。
我最后的想法是部署像 Redis
这样的基于代理的消息系统,或者干脆退回到无代理 zmq
,这对于 GUI 应用程序的设置有点麻烦.
那么简单的问题:
是否有任何简单的框架允许在 Python 中创建服务器-"task",我可以将消息发布到该服务器?
对于在 python 中为并发而苦苦挣扎的任何人:
不,没有任何简单的框架。恕我直言 pythons 的并发处理有点混乱(与 golang
等内置并发的其他语言相比)。有多个主要软件包实现了这一点,其中之一 asyncio
,但其中大多数都不兼容。我最终使用了 this question.
中提出的类似解决方案
我在 Python 中有一个 运行 CLI 应用程序,它使用线程来执行一些工作程序。现在我正在为这个应用程序使用电子编写一个 GUI。对于简单的 requests/responses,我使用 gRPC
在 Python 应用程序和 GUI 之间进行通信。
然而,我正在努力寻找一种合适的发布机制来将数据推送到 GUI:gRPC
s 集成流式传输将无法工作,因为它使用生成器;正如已经提到的,我的较长的阻塞任务是使用线程(threading.Thread
的子类)执行的。我也想从这些线程中发出某些事件(例如,进度)。
然后我找到了 Flasks
SocketIO 实现,但是,这是一个阻塞执行,因此并不真正适合我的想法 - 我必须再次执行两个进程(Flask和我的 CLI 应用程序)...
我发现的另一个包是 websockets
,但我无法理解如何实现他们在 patterns 中提到的这个 producer()
功能。
我最后的想法是部署像 Redis
这样的基于代理的消息系统,或者干脆退回到无代理 zmq
,这对于 GUI 应用程序的设置有点麻烦.
那么简单的问题:
是否有任何简单的框架允许在 Python 中创建服务器-"task",我可以将消息发布到该服务器?
对于在 python 中为并发而苦苦挣扎的任何人:
不,没有任何简单的框架。恕我直言 pythons 的并发处理有点混乱(与 golang
等内置并发的其他语言相比)。有多个主要软件包实现了这一点,其中之一 asyncio
,但其中大多数都不兼容。我最终使用了 this question.