Python 中用于发布的简单 websocket 服务器

Simple websocket server in Python for publishing

我在 Python 中有一个 运行 CLI 应用程序,它使用线程来执行一些工作程序。现在我正在为这个应用程序使用电子编写一个 GUI。对于简单的 requests/responses,我使用 gRPC 在 Python 应用程序和 GUI 之间进行通信。

然而,我正在努力寻找一种合适的发布机制来将数据推送到 GUI:gRPCs 集成流式传输将无法工作,因为它使用生成器;正如已经提到的,我的较长的阻塞任务是使用线程(threading.Thread 的子类)执行的。我也想从这些线程中发出某些事件(例如,进度)。

然后我找到了 Flasks SocketIO 实现,但是,这是一个阻塞执行,因此并不真正适合我的想法 - 我必须再次执行两个进程(Flask和我的 CLI 应用程序).​​..

我发现的另一个包是 websockets,但我无法理解如何实现他们在 patterns 中提到的这个 producer() 功能。

我最后的想法是部署像 Redis 这样的基于代理的消息系统,或者干脆退回到无代理 zmq,这对于 GUI 应用程序的设置有点麻烦.

那么简单的问题:

是否有任何简单的框架允许在 Python 中创建服务器-"task",我可以将消息发布到该服务器?

对于在 python 中为并发而苦苦挣扎的任何人:

不,没有任何简单的框架。恕我直言 pythons 的并发处理有点混乱(与 golang 等内置并发的其他语言相比)。有多个主要软件包实现了这一点,其中之一 asyncio,但其中大多数都不兼容。我最终使用了 this question.

中提出的类似解决方案