stomp.Connection() timeout参数不符合预期问题咨询
概述
使用stomp.Connection(timeout=5)时出现意外断开问题:成功建立连接后,连接仍会在5秒后终止,这与Python socket在超时后保持连接的行为形成对比。
问题详情
本地运行activeMQ,已确认连接成功建立。
据了解,stomp.Connection()的timeout参数仅应作用于初始连接阶段。例如使用stomp.Connection(timeout=5)时,预期行为是若5秒内无法建立初始连接则抛出异常。
但实际观察到的情况是,即便连接成功建立且ActiveMQ仍可用,连接仍会在5秒后终止。
代码示例
运行以下代码时,预期timeout参数仅作用于初始连接,若5秒内建立连接则应保持连接。但终端显示连接约5秒后断开(初始的False应为连接未完全建立导致)。
import stomp import time conn = stomp.Connection(timeout=5) conn.connect('localhost', 61613) while True: message = "Hello, world!" print(f"Sent message: {message}") print(conn.is_connected()) time.sleep(1)
若使用Python标准库socket编写类似客户端代码(服务器运行中),超时后连接仍会保持。
import socket import time def client_program(): host = "localhost" port = 5000 client_socket = socket.socket() client_socket.connect((host, port)) client_socket.settimeout(5) while True: if client_socket.fileno() == -1: print("Connection is closed.") break else: print("Connection is kept preserved.") time.sleep(1) if __name__ == '__main__': client_program()
疑似原因
可能的原因包括:
- 代码问题(代码很简单,但问题出在哪?)
- ActiveMQ问题
- TCP保活机制问题
- 或是真的是bug???
感谢维护优秀的库,期待您的回复。
内容的提问来源于stack exchange,提问作者live-today
相关产品推荐
相关产品推荐

