发送和接收 RPC 的函数名称?
Posted
技术标签:
【中文标题】发送和接收 RPC 的函数名称?【英文标题】:Function Names for sending and receiving RPCs? 【发布时间】:2010-08-26 12:43:13 【问题描述】:我正在使用扭曲。我设置了协议,以便发送 RPC,我执行protocol.send("update_status", data)
。为了记录我实现了哪些 RPC,我对每个 RPC 进行了单独的函数调用,因此在这种情况下,我会调用 REQUEST_UPDATE_STATUS(data)
来发送该 RPC。当协议接收到 RPC 时,会根据其名称调用函数,在本例中为 CMD_UPDATE_STATUS
。
问题是REQUEST
和CMD
有点别扭。我可能会将REQUEST
误认为是命令的一部分,例如REQUEST_NEW_DATA
,这最终会触发一个名为'new_data'
的RPC。但是,REQUEST_REQUEST_NEW_DATA
很傻。
CMD
也很尴尬,因为REQUEST_SEND_NEW_DATA
会变成CMD_SEND_NEW_DATA
,这有点尴尬。
有什么建议吗?
【问题讨论】:
【参考方案1】:第一个提示:使用 PB...它设计得很好,并且确实做到了
第二个提示:如果第一个提示对您不起作用,请执行 PB 的操作。在客户端,“callRemote("foo_func")”请求服务器调用服务器对象上的“foo_func”函数。然后服务器将使用“getattr(server_obj, "remote_" + "foo_func")" 来查找远程方法。如果该方法存在,则调用它。否则返回错误。这种设计的好处是它完全消除了您的 REQUEST...CMD...常量。
【讨论】:
PB 表示 Perspective Broker - twistedmatrix.com/documents/current/core/examples/#auto4 嗯,我已经可以这样做了.. 而不是protocol.send
,我使用protocol.callRemote
,而不是CMD_SEND_NEW_DATA
,我更喜欢remote_sendNewData
或REMOTE_sendNewData
。我想我可能已经实现了 PB。
我建议您通读 Perspective Broker 文档。任何在 Python 中实现 RPC 的人都会从对 PB 设计的理解中受益,因为它包含一些针对常见问题的优雅解决方案。重量更轻的 AMP 协议(也是扭曲的)是另一个很好的背景来源。以上是关于发送和接收 RPC 的函数名称?的主要内容,如果未能解决你的问题,请参考以下文章