• 关于python urlopen 一个类似radio流的timeout方法


    终极解决方法来啦!看代码感受:

    import requests
    import eventlet
    import time
    
    eventlet.monkey_patch() 
    
    try:
        with eventlet.Timeout(5):
            response = requests.get("http://t.co/iXJWRrfl5n", verify=False) #http://t.co/iXJWRrfl5n is a radio stream!!
            #response = requests.get("http://docs.python-requests.org/en/master/user/advanced/", verify=False)
            print response.text
    except:
        print 'error'
    
    print response.text
    while True:
        time.sleep(1)
        print 'sec'
    from urllib2 import urlopen
    from threading import Timer
    url = "http://t.co/iXJWRrfl5n"
    fh = urlopen(url)
    t = Timer(5.0, fh.close)
    t.start()
    data = fh.read()
    t.cancel()

    5s以后会把read()方法给掐了

    另见

    http://stackoverflow.com/questions/2281850/timeout-function-if-it-takes-too-long-to-finish

    with timeout(seconds=3):
        sleep(4)

    class timeout:
        def __init__(self, seconds=1, error_message='Timeout'):
            self.seconds = seconds
            self.error_message = error_message
        def handle_timeout(self, signum, frame):
            raise TimeoutError(self.error_message)
        def __enter__(self):
            signal.signal(signal.SIGALRM, self.handle_timeout)
            signal.alarm(self.seconds)
        def __exit__(self, type, value, traceback):
            signal.alarm(0)

    import signal
    
    def signal_handler(signum, frame):
        raise Exception("Timed out!")
    
    signal.signal(signal.SIGALRM, signal_handler)
    signal.alarm(10)   # Ten seconds
    try:
        long_function_call()
    except Exception, msg:
        print "Timed out!"
    
    signal.alarm(0)   # cancel alarm when function return in time
    
    #other code...
     http://stackoverflow.com/questions/21965484/timeout-for-python-requests-get-entire-response
    import requests
    import eventlet
    eventlet.monkey_patch()
    
    with eventlet.Timeout(10):
        requests.get("http://ipv4.download.thinkbroadband.com/1GB.zip", verify=False)


  • 相关阅读:
    @PostConstruct和 @PreDestroy注解
    【JQuery】,ajax请求中,url出现[Object Object]
    筛法求素数
    母牛的故事
    将一个数拆分
    计算两个日期差
    用二分查找——查找比目标元素略大的索引
    反向输出字符串
    bootstrap table合并单元格(该版本是简单的应用)
    获取访问者IP
  • 原文地址:https://www.cnblogs.com/turtle920/p/5659292.html
Copyright © 2020-2023  润新知