我想在明天进行深入研究并开始在阳光下尝试所有选项之前进行堆栈查询。我们有一个应用程序,我们在 PyBind 11 中嵌入了 python。在当前的实现中,应用程序事件正在触发对远程服务器的 xml-rpc 调用,并且它工作正常。
然而,我们正在寻求通过添加 websocket 服务器、连接到 Kafka 或 MQ 或其他某种功能来扩展此功能 - 允许传入和传出消息。
据我了解,我遇到一些设计问题的地方是我有 1 个解释器,这意味着我可能(默认情况下)有 1 个线程可用。
我试图弄清楚什么方法给了我以下:
- 将允许 C++ 中的应用程序事件调用 Python 解释器并触发事件
- python解释器接收到的事件将回调到C++
我很确定这很容易设置一种或另一种方式,但我很困惑如何同时处理这两种事情。
我可以很容易地设置一个 websocket 服务器 - 但如果我的服务器正在运行
start_server = websockets.serve(counter, "localhost", 6789)
asyncio.get_event_loop().run_until_complete(start_server)
asyncio.get_event_loop().run_forever()
我仍然能够对解释器进行额外的调用,还是 Python 会被锁定?
总之:
使用嵌入式 Python 时——如果我有一个正在运行的进程(比如在 websocket 上监听消息),我仍然能够调用 Python 解释器来做其他事情——还是我被阻止了?