博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
等待网络服务是否可用
阅读量:6330 次
发布时间:2019-06-22

本文共 2207 字,大约阅读时间需要 7 分钟。

#coding:utf-8__author__ = 'similarface'import argparseimport socketimport errnofrom time import time as nowDEFAULT_TIMEOUT = 120DEFAULT_SERVER_HOST = 'localhost'DEFAULT_SERVER_PORT = 80class NetServiceChecker(object):    """ Wait for a network service to come online"""    def __init__(self, host, port, timeout=DEFAULT_TIMEOUT):        self.host = host        self.port = port        self.timeout = timeout        self.sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)    def end_wait(self):        self.sock.close()    def check(self):        """ Check the service """        if self.timeout:            #超时时间间隔+加上现在的时间            end_time = now() + self.timeout        while True:            try:                if self.timeout:                    #下一次的超时时间                    next_timeout = end_time - now()                    if next_timeout < 0:                        return False                    else:                        print "设置soct的timeout参数 %ss" %round(next_timeout)                        self.sock.settimeout(next_timeout)                #连接sock                self.sock.connect((self.host, self.port))            # handle exceptions            except socket.timeout, err:                if self.timeout:                    return False            except socket.error, err:                print "Exception: %s" %err            else:                #如果soct能建立                self.end_wait()                return Trueif __name__ == '__main__':    parser = argparse.ArgumentParser(description='Wait for Network Service')    parser.add_argument('--host', action="store", dest="host",  default=DEFAULT_SERVER_HOST)    parser.add_argument('--port', action="store", dest="port", type=int, default=DEFAULT_SERVER_PORT)    parser.add_argument('--timeout', action="store", dest="timeout", type=int, default=DEFAULT_TIMEOUT)    given_args = parser.parse_args()    host, port, timeout = given_args.host, given_args.port, given_args.timeout    service_checker = NetServiceChecker(host, port, timeout=timeout)    print "检测网络服务 %s:%s ..." %(host, port)    if service_checker.check():        print "服务可用!"    else:        print "服务不可用!"

  

转载于:https://www.cnblogs.com/similarface/p/5531032.html

你可能感兴趣的文章
clickhouse修改时区
查看>>
CSS_定位
查看>>
第二十四章:页面导航(六)
查看>>
百度、长沙加码自动驾驶,湖南阿波罗智行科技公司成立 ...
查看>>
Java面试笔试题大汇总一(最全+详细答案)
查看>>
10 个 Linux 中方便的 Bash 别名
查看>>
[Server] 服务器配置SSH登录邮件通知
查看>>
全新 DOCKER PALS 计划上线,带给您不一样的参会体验! ...
查看>>
Android开发之自定义View(二)
查看>>
python爬虫之微打赏(scrapy版)
查看>>
自制操作系统Antz day08——实现内核 (中) 扩展内核
查看>>
poj-1056-IMMEDIATE DECODABILITY(字典)
查看>>
阿里云容器Kubernetes监控(二) - 使用Grafana展现Pod监控数据
查看>>
区块链应用 | 不知道什么时候起,满世界都在谈区块链的事情
查看>>
小程序爆红 专家:对简单APP是巨大打击
查看>>
FarBox--另类有趣的网站服务【转】
查看>>
在非纯色背景上,叠加背景透明的BUTTON和STATIC_TEXT控件
查看>>
Distributed2:Linked Server Login 添加和删除
查看>>
海量数据处理相关面试问题
查看>>
Python-time
查看>>