标签:cell 一个 远程 base 有一个 kbengine client 规则 sea
KBEngine服务端实体调用客户端实体方式是:self.client.xxxMethod()
xxxMethod需要定义为实体客户端方法,这个很好理解,没有什么问题。
但是在服务端实体调用服务端实体的时候就需要特别注意两个实体是否有可能在不同的进程。
如果两个实体是在同一个进程的,可以直接调用方法,不需要定义为实体协议方法,而且可以获取返回值。
但如果两个实体是在不同的进程,需要将方法定义为实体协议方法,而且不能获取返回值,返回值永远都是None,因为这个调用过程是通过网络线程进行的远程方法调用,不可等待。
就比如baseapp和cellapp是两个进程,那么base实体和cell实体肯定是在不同的进程上的。
还有就是如果你开启了多个baseapp(或cellapp),那么base实体(或cell实体)之间也可能是在不同进程上的。
但如果你只有一个baseapp(或cellapp),那么base实体(或cell实体)肯定是在同一进程上的。
以上为个人学习经验分享,仅供参考
标签:cell 一个 远程 base 有一个 kbengine client 规则 sea
原文地址:https://blog.51cto.com/14218068/2482549