跳至正文
-
关注
IT极限技术分享汇

ITmax

IT极限技术分享汇

ITmax

  • 首页
  • 商店
  • 我的帐户
  • 结账
  • 购物车
  • 首页
  • 商店
  • 我的帐户
  • 结账
  • 购物车
关

搜索

技术分享

记录一个 nameko standalone rpc 应答不消费导致阻塞的问题

作者 itmax
2024年11月28日 1 分钟阅读
0

使用 nameko standalone rpc 调用其他 rpc 服务的示例代码:

from nameko.standalone.rpc import ClusterRpcProxy

with ClusterRpcProxy(config) as cluster_rpc:
    parse_result_json = cluster_rpc.parse_rpc_service.parse_rpc_v3(
        parser_result.json(ensure_ascii=False)
    )

先明确两个角色:

  • nameko rpc 客户端,上面的代码就是客户端代码
  • nameko rpc 服务端

遇到了一个问题,就是 rpc 服务端已经返回数据了(服务端是把数据推到 rabbitmq 即视为返回数据完成),但是 rpc 客户端一直处于数据消费中。所以问题是出在客户端,而不是服务端

出现了类似下面格式的 10个队列

http://xxxx:15672/#/queues/xxx-test/rpc.reply-standalone_rpc_proxy-cde4457d-a580-4672-8a94-1cf4b5fce9f0

http://xxxx:15672/#/queues/xxx-test/rpc.reply-standalone_rpc_proxy-a1ad897c-48d6-4ff0-b975-9e83ec79916d

问题从 rabbitmq 看就是 total 列的值是 1,unacked 也是 1。且一直不消费

图片.png

重启 nameko rpc 客户端的程序(kill 进程)问题就会随之消失

队列页面的详情是这样

图片.png

消费者页面详情是这样

图片.png

至于问题产生的原因,还不清楚,需要等下一次再发生的时候,再进一步调查

不过我初步怀疑是引入了一些和 eventlet 协程不兼容的代码,导致 cpu 会夺走导致的

https://segmentfault.com/a/1190000045506505

作者

itmax

关注我
其他文章
上一个

35 岁程序员面试 21 连挂,惨不忍睹。。。

下一个

vivo 企业云盘服务端实现简介

暂无评论!成为第一个。

发表回复 取消回复

您的邮箱地址不会被公开。 必填项已用 * 标注

Copyright 2026 — IT极限技术分享汇. 备案号:浙ICP备17006560号-2