python学习之路

python模拟监控服务(观察者模式)

2019-06-01  本文已影响28人  Alcazar
程序设计:

有三台服务器,每隔5s向某台服务器发送请求,看是否获取正常的返回值。
如果返回正常True,则继续监控;如果连续3次没有返回正常值False,则向指定服务器负责人发送信息通知;

关于python设计模式之观察者模式(参考)
代码实现:

import random
class Server:
    def __init__(self,name):
        self.times = random.randint(3,10)
        self.name = name

    def connect(self):
        if self.times > 0:
            self.times -= 1
            return True
        return False

class Monitor:
    def __init__(self):
        # 监控列表
        self.servers = []
        self.admins = []

    def add_server(self,server):
        self.servers.append(server)
        return self

    def add_admin(self,admin):
        self.admins.append(admin)

    def test(self):
        for server in self.servers:
            if not server.connect():
                # 通知相关者
                for admin in self.admins:
                    Advisor.send_sms(admin,server.name + "链接异常~!")
                pass
            else :
                print(server.name + "测试正常...")

class Advisor:
    @staticmethod
    def send_sms(admin,msg):
        print('向' + admin + "发送信息:" + msg)

monitor = Monitor()
monitor.add_admin("zs")
monitor.add_admin("lisi")
monitor.add_server(Server("server1")).add_server(Server("server2"))

import time
while True:
    monitor.test()
    time.sleep(3)
执行结果
上一篇下一篇

猜你喜欢

热点阅读