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

Python Telnet超时异常未触发问题求助

问题分析与解决

你捕获错了异常类型。telnetlib.Telnet的read_until方法在超时触发时,抛出的不是EOFError,而是:

  • Python 3.3及以上版本:TimeoutError
  • 更早的Python版本:socket.timeout

EOFError仅在连接被关闭、无更多数据可读时触发,和超时属于完全不同的场景。

修改后的代码示例

import socket  # 兼容旧版本Python需导入该模块

try:                                                               
    tn.read_until(b"calll:", timeout=5)                            
except (TimeoutError, socket.timeout):  # 覆盖不同Python版本的超时异常
    logdata = 'Timeout reached in login.'
    logit(logdata)                                                
    failcode = 4
    exitscript()                                                    # Leave script, EC4 set.
else:
    tn.write(USER.encode("ascii") + b"\n")                          

若你的环境是Python 3.3+,也可仅捕获TimeoutError,但同时捕获socket.timeout能获得更好的兼容性。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.31 01:54:21