在单个进程中运行Apache Thrift/作为外部函数接口

在单个进程中运行Apache Thrift/作为外部函数接口,thrift,ffi,Thrift,Ffi,Apache Thrift提供了传统的RPC,具有不同的客户端和服务器进程。 是否可以将其用作外部功能接口? 在这里,单个线程的调用堆栈可以同时包含客户端和服务器代码 编辑:这个问题基本上是一年前提出的: 有更新吗? 看起来所有的部分都已经实现了。让我把问题转过来:到底是什么让你认为这是不可能的? 当然,您可以在一个模块、进程、多个进程或机器中组合服务器和客户端的任意组合。服务器端和客户端的位置并不重要,只要它们能够通信。即使“服务器”和“客户机”(更好的术语是调用者和被调用者)位于同一个线程中

Apache Thrift提供了传统的RPC,具有不同的客户端和服务器进程。 是否可以将其用作外部功能接口? 在这里,单个线程的调用堆栈可以同时包含客户端和服务器代码

编辑:这个问题基本上是一年前提出的: 有更新吗?
看起来所有的部分都已经实现了。

让我把问题转过来:到底是什么让你认为这是不可能的?

当然,您可以在一个模块、进程、多个进程或机器中组合服务器和客户端的任意组合。服务器端和客户端的位置并不重要,只要它们能够通信。即使“服务器”和“客户机”(更好的术语是调用者和被调用者)位于同一个线程中,在这种情况下,您只需使用序列化部分

您是否有任何特定的问题,或者您可能希望共享的任何代码都无法按预期工作


简短的草图/想法如何工作:

- outer code
  - setup a service client using stream transport
  - call service client's xxx-send() function 
  - pass stream/string data to inner module via dedicated function call
    - create processor instance
    - pass stream data as input, provide another stream for output data
      - call to inner code
    - return output stream/string data to outer module
  - setup a service client using stream transport
  - call service client's xxx-recv() function 
  - return the data
我已经使用了德尔福和C#的上述作品中约75%的作品,我相信其余的作品也能成功(再次使用瑞士军刀)。现在还不能说Python代码是如何支持这一点的,或者需要做些什么才能用Python实现这一点

更简单的方法如下(注意根本没有接口):


我想你可能误解了我的问题。事实上,我相信这应该是可能的,但我没有看到任何人以这种方式使用节俭。如果节俭可以这样使用,我想举个例子。如果不能,我想要一个理由。我也没有。也许这不是一个“主流”用例。再说一次,既然我们在这里讲了这么多,那么讨论一些(伪?)代码将是一个更好的开始,而不仅仅是一个模糊和概念性的问题-
- outer code
  - setup a service client using stream transport
  - serialize args structure (e.g. union, to support different calls)
  - pass stream/string data to inner module via dedicated function call
    - deserialize args
      - call to inner code
    - serialize output struct (again, union to ...)
    - return stream/string to outer module
  - deserialize the data
  - return the data