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

Python脚本直接运行时STOMP连接代码无输出,交互模式正常

问题原因与解决方案

原因分析

  • 命令行运行脚本时,主线程执行完所有代码后会立刻退出。而stomp库的消息监听依赖后台异步线程,主线程退出会直接终止所有后台线程,导致还没来得及接收、处理消息就结束了,所以看不到订阅后的计数器输出。
  • Python交互模式下,解释器会一直保持活跃状态(等待用户输入),后台的STOMP监听线程能持续运行,因此可以正常接收并输出消息。

解决方法

方法1:添加阻塞等待逻辑

在脚本末尾加入让主线程保持运行的代码,给后台线程留足处理消息的时间:

# 脚本最后添加,等待用户输入后再退出
input("Press Enter to exit...")

如果需要自动退出,也可以用循环加睡眠:

import time
# 持续阻塞10秒后自动退出,可根据需求调整时长
time.sleep(10)

方法2:使用stomp库内置的消息循环

stomp.py库提供了loop()方法,启动后会阻塞主线程,持续处理STOMP消息:

# 连接并订阅后,启动消息循环
connection.connect(wait=True)
connection.subscribe(destination='/queue/test', id=1, ack='auto')
# 启动循环,主线程会一直阻塞在这里直到主动断开连接
connection.loop()

方法3:手动管理监听线程

如果需要更灵活的线程控制,可以手动启动监听线程并让主线程等待它结束:

import threading
# 连接订阅完成后,启动监听线程
listen_thread = threading.Thread(target=connection.loop)
listen_thread.start()
# 主线程等待监听线程结束
listen_thread.join()

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.24 08:42:37