python - Python:尝试使用 SO 答案,得到 --> NameError: name 'timeout' is not defined
问题描述
从这个问题中,我尝试遵循 Maksim Skurydzin 的答案(截至 2020 年 1 月 3 日 @ 下午 6:33 PST 的第三个答案),但我得到了NameError: name 'timeout' is not defined
。
我正在尝试使用 TRY EXCEPT 在使用套接字时捕获超时。我从IBM 教程“Python 中的套接字编程”中的“清单 11. 简单 Python 数据报回显服务器”开始:
import socket
dgramSock = socket.socket( socket.AF_INET, socket.SOCK_DGRAM )
dgramSock.bind( ('', 23000) )
while 1:
msg, (addr, port) = dgramSock.recvfrom( 100 )
dgramSock.sendto( msg, (addr, port) )
我只是添加了几行来得到这个:
import socket
from time import sleep
dgramSock = socket.socket( socket.AF_INET, socket.SOCK_DGRAM )
dgramSock.bind(('', 62020))
dgramSock.setblocking(0)
while 1:
try:
msg, (addr, port) = dgramSock.recvfrom(64)
print msg
dgramSock.sendto(msg, (addr, port))
except timeout:
sleep(.001)
当我尝试运行它时会出现上述错误。except timeout:
当我更改为时,这会按照我想要的方式工作except:
,但是 Python Docs 不鼓励使用except
这种方式(8.3。处理异常......“最后一个 except 子句可能会省略异常名称,以用作通配符。使用这个非常小心,因为用这种方式很容易掩盖真正的编程错误!”)。为了遵循这个建议,我找到了看起来非常合适的答案(上面提到的),我认为我正确地遵循了它。我究竟做错了什么?
解决方案
推荐阅读
- python - 为什么 psycopg2 通知侦听循环需要读取连接光标
- reactjs - 如何使用 react-three-fiber 和 @react-three/drei 移动相机?
- python - BigQuery 客户端 python 获取基于列的分区列名称
- wildfly - Wildfly 连接拒绝带有 DNS 名称的 url
- ruby-on-rails - Node Sass 还不支持你当前的环境:OS X Unsupported architecture (arm64) with Unsupported runtime (102)
- java - Spring Boot + RabbitMQ 消息在延迟交换时丢失
- git - 由于 git 2.29 中的 git pull 导致 VScode git sync 中断
- powershell - 减少Powershell循环内变量中的行数
- python - 熊猫数据框到自定义嵌套 json
- powershell - Windows 窗体问题 - 无法加载 Windows.Markup.XamlReader