首页 > 解决方案 > 在 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 循环来实现这一点。并确保此代码执行无限时间。现在,它只会执行一次。

标签: python

解决方案


那适合你吗?

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')

推荐阅读