我有一个用 C++ 编写的程序,带有一个用于 RPC 的 Web 界面。我可以调用http://localhost/ListVariables
或http://localhost/RunFunction?var=1
让 C 代码执行 ListVariables 或 RunFunction。它可以工作,但是当有这么多优秀的 Python Web 服务器时,我宁愿不必在 C/C++ 中管理 Web 服务器。
我想象的是让 C 程序调用 Python 以在另一个线程(即 Tornado)上启动 Web 服务器,返回到 C,然后继续进行计算。然后,当 Python 服务器收到 on 请求时http://localhost/ListVariables
,它会回调C 并在已经运行的进程上执行 ListVariables。
C -----> processing -----------> processing ------------> RPC: FuncA -------->
| ^ |
\---> Python Web Server ---------- Request for: FuncA --/ ... \-------->
^
browser: http://localhost/FuncA ---/
该项目有一个不幸的警告,即程序必须从 C 开始。在做了一些研究之后,这似乎有点边界情况,因为 Python-->C 和 C-->Python 可以用 Cython 完成。但是,我在 C-->Python-->C 上找不到很多资源,因为我发现的大多数示例都描述了链接到库而不是链接到已经运行的进程。是否可以让 Python 回调到正在运行的 C 程序中?