目前在做一个服务平台,是以 Tornado 作为提供给外部调用的。然后 Tornado 接收请求后,把参数传到 Celery 的 Prefork 进程中去进行远程的 RPC 调用(调用另一个平台 [可以理解为服务] )然后返回请求结果,然而目前需要在 celery 的进程中去维护每个服务的 RPC 链接,感觉这样服务的分布式状态会很乱,而且目前在 Celery 进程中去修改一个全局变量来维护 rpc 链接的时候,会出现保存链接的对象数据存在,但是方法丢失的情况。想问问大家,有没有好的方法可以解决这种比较复杂的 Python 异步调用的场景?
1
ray1888 OP 目前使用的是 rpyc
|
2
laike9m 2018-07-06 00:42:44 +08:00
试试 grpc 呢
|
3
weyou 2018-07-06 02:57:22 +08:00 via Android
Pyro4 了解一下?
|
4
cbdyzj 2018-07-06 07:39:01 +08:00 via Android
用消息中间件
|
5
niuroumian 2018-07-06 08:06:09 +08:00 via iPhone
gRPC 非常好用!服务端客户端语言任意搭配,而且 nginx 原生支持负载平衡
|
6
askfilm 2018-07-06 08:30:00 +08:00
thrift
|
7
chenqh 2018-07-06 08:57:34 +08:00
多个服务?直接 http 不就好了吗
|
8
ray1888 OP 其实我想解决的目的是在进程里面动态添加 rpc 的链接,或者 python 有类似于 rpc 进程池的实现吗?
|