You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python使用STOMP接收消息筛选CA_MSG数据返回空列表问题

问题原因

原代码返回空列表是三个逻辑错误共同导致的:

  • 结果列表new_msg的初始化语句写在了for循环内部,每遍历一条消息就会清空之前已经存入的匹配结果,即使匹配到数据也无法留存。
  • m.keys()返回的是字典键的视图对象,属于集合类结构,和字符串'CA_MSG'做相等判断永远返回False,判断条件从根本上无法触发。
  • 需求是匹配所有开头带CA_MSG标签的数据,原逻辑用完全相等判断,本身也不符合前缀匹配的要求。
正确实现代码

首先在循环外部初始化结果存储列表,遍历每条消息时检查字典内是否存在以CA_MSG为前缀的键,匹配成功就将整条消息存入结果:

import json

# 解析STOMP协议返回的消息体
msg = json.loads(frame.body)
new_msg = []

for single_msg in msg:
    for key in single_msg.keys():
        if key.startswith("CA_MSG"):
            new_msg.append(single_msg)
            # 单条消息只要匹配到目标前缀键就终止检查,避免重复添加
            break

如果需要更简洁的写法,可以用列表推导式实现相同逻辑:

new_msg = [
    single_msg for single_msg in msg 
    if any(key.startswith("CA_MSG") for key in single_msg.keys())
]

内容的提问来源于stack exchange,提问作者SHexter

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.27 04:36:15