python - 在 python 中使用一个客户端检查服务器是否可用
问题描述
我想写一段代码来实现下面
我在 python 中编写了一个客户端(c1)和 3 个服务器(s1、s2 和 s3)。
C1 将检查它是否能够连接到 s1。如果是,它将休眠 2 分钟。它会在 2 分钟后再次唤醒并检查 s1 是否可连接。如果没有,那么它将检查 s2。如果 s2 正在监听,则 c1 将进入睡眠状态 2 分钟。这将继续发生。
现在,我的问题是,我可以检查 s1 但不能使用 if else 编码
s=socket.socket(socket.AF_INET, socket.SOCK_STREAM)
try:
s.connect(('111.111.1.1', 2222))
time.sleep(120)
except Exception as inst:
print("not ready1")
try:
s.connect(('11.22.22.2', 2212))
time.sleep(120)
except Exception as inst:
print("not ready2")
try:
s.connect(('1.1.1.33', 1234))
time.sleep(120)
except Exception as inst:
print("not ready3")
我想使用 if else 循环来实现这一点。并确保此代码执行无限时间。现在,它只会执行一次。
解决方案
那适合你吗?
import socket
import time
def run(ip, port):
try:
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.connect((ip, port))
return True
except Exception:
return False
while True:
if run('111.111.1.1', 2222):
print('s1 read')
time.sleep(120)
elif run('11.22.22.2', 2222):
print('s2 read')
time.sleep(120)
else:
print('s1 and s2 not read')
推荐阅读
- msbuild - 执行任务“构建”时发生错误
- c# - 复制和粘贴 xml 结构片段
- jmeter - 从 csv 读取数据并形成 JSON 数组,然后 POST -JMETER 4.0
- pie-chart - 如何在 apexcharts.js 上仅返回饼图中的值不会转换百分比
- bash - 在(bash)for循环中顺序运行程序
- node.js - 如何使用 sequelize 在 sqlite 文件的架构中的主键中写入非空值?
- android - 即使在 android arm64-v8a 上的 root 中,Execvp 也失败并显示 errno 13
- docker - 运行容器是什么意思?
- c# - 如何使用 c# 获取 sqlite 数据库中所有表的所有名称?
- c# - 如何以编程方式更新实体模型 (EF 5)