我正在写一些检查端口是否打开的东西,但是修改它以供我使用
我为检查设置了timeout,如果timeout达到,就会引发socket.timeout
异常,但我希望try
中的代码块也在socket.timeout
上调用:
try:
sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
sock.settimeout(5)
result = sock.connect_ex((check_server_ip, check_port))
if result == 0:
# act on open port
else:
# act on closed port
sock.close()
except socket.timeout:
# act on closed port
我在# act on closed port
上的代码块很长。我可以创建一个包含代码的函数,并在else
语句和socket.timeout
异常上调用它,但我敢打赌python有更聪明的东西
什么能做到这一点
我觉得你不需要什么聪明或神奇的东西。我查看了您的代码,然后在终端中输入
python -c "import this"
,并在行中看到:因此,您不需要在
try ... except timeout
中创建、设置timeout并关闭套接字—没有任何东西会在那里抛出timeout:然而,这段代码的正确性实际上取决于
do_connected_stuff()
是否可以抛出socket.timeout
,以及在这种情况下do_disconnected_stuff()
是否是有意义的操作。如果所有的问题都是肯定的,那么你已经有了一个非常优化的结构-至少没有系统的完整视图相关问题 更多 >
编程相关推荐