精华内容
下载资源
问答
  • 超时装饰器 安装 从源代码: python setup.py install 从pypi: pip install timeout-decorator 用法 import time import timeout_decorator @timeout_decorator.timeout(5) ...@timeout_decorator.timeout(5
  • python timeout(设置函数超时退出)

    千次阅读 2021-07-23 14:13:21
    是我喜欢的类型,果断一试~ (代码给大家贴出来~姑且一试) import time import timeout_decorator @timeout_decorator.timeout(6) def test(): time.sleep(5) return 5 aaa = test() print(aaa) 然鹅,理想是美好的...

    最近碰到一个场景

    用opencv链接网络摄像头,但是摄像头的地址不一定是正确的,或者是打开的,当错误的时候会直接报错,但是当地址正确却没有打开,或者网络限制的时候,会等上半天才返回,并且不报错

    ???,这哪里行,我都用pthon了,还能不知道人生苦短嘛~
    于是一顿操作猛如虎~好吧,多线程、信号量、巴拉巴拉,算了,还是问问度娘

    然后看到了这个文章
    https://www.cnblogs.com/sunshine-blog/p/12024820.html

    在这里插入图片描述
    哇,这个页面很简单,是我喜欢的类型,果断一试~
    (代码给大家贴出来~姑且一试)

    import time
    import timeout_decorator
    
    
    @timeout_decorator.timeout(6)
    def test():
        time.sleep(5)
        return 5
    
    
    aaa = test()
    print(aaa)
    

    然鹅,理想是美好的,现实是骨感的。

    报错信息

    AttributeError: module 'signal' has no attribute 'SIGALRM'
    

    在这里插入图片描述
    罢了,老夫再找找
    (此方法留下,以后linux中用)

    终于(其实也就看了两三个文章)让我找到一个一样简单的(还有好几个方法,我用那几个方法证明了我的懒~)

    文章地址:https://zhuanlan.zhihu.com/p/39743129

    代码如下:

    import time
    from func_timeout import func_set_timeout
    
    @func_set_timeout(3)
    def task():
        while True:
            print('hello world')
            time.sleep(1)
    
    if __name__ == '__main__':
        task()
    

    运行结果如下
    在这里插入图片描述
    奈斯~ 是我想要的结果~

    最后调用摄像头代码如下

    import cv2
    from func_timeout import func_set_timeout
    
    @func_set_timeout(5)
    def click_camera(in_url):
        cap = cv2.VideoCapture(in_url)
        return cap
    in_url = input('camera_path:')
    cap = click_camera(in_url)
    

    ok
    搞定~

    展开全文
  • 主要介绍了Python操作Elasticsearch处理timeout超时,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
  • # coding: utf-8# 带timeout的命令执行import timeimport subprocessclass TimeoutError(Exception):passdef command(cmd, timeout=60):"""执行命令cmd,返回命令输出的内容。如果超时将会抛出TimeoutEr...

    下面的方法在Windows下没问题,但Linux下执行超时时,命令进程不能被杀死。

    # coding: utf-8

    # 带timeout的命令执行

    import time

    import subprocess

    class TimeoutError(Exception):

    pass

    def command(cmd, timeout=60):

    """执行命令cmd,返回命令输出的内容。

    如果超时将会抛出TimeoutError异常。

    cmd - 要执行的命令

    timeout - 最长等待时间,单位:秒

    """

    p = subprocess.Popen(cmd, stderr=subprocess.STDOUT, stdout=subprocess.PIPE, shell=True)

    t_beginning = time.time()

    seconds_passed = 0

    while True:

    if p.poll() is not None:

    break

    seconds_passed = time.time() - t_beginning

    if timeout and seconds_passed > timeout:

    p.terminate()

    raise TimeoutError(cmd, timeout)

    time.sleep(0.1)

    return p.stdout.read()

    if __name__ == "__main__":

    print command(cmd='ping www.redicecn.com', timeout=1)

    展开全文
  • timeout_decorator.py

    2020-04-09 13:07:06
    windows系统下的python超时装饰器,解决pypi中timeout-decorator库在windows系统上不可用的问题。
  • 正文: 1、python 的requests请求都可以使用timeout参数。 2、timeout参数可以传入一个简单的浮点数,它将请求的连接部分和读取部分设为相同的超时时间。 3、timeout参数也可以传入一个包含两个简单浮点数的元组,...

    首先发一下牢骚: 不管是抄袭还是转载,有点新东西行不行,一味的转载有什么用呢?东西还以那点东西,让想解决问题的人查看一些一摸一样的文章,只会浪费查询者的时间。况且! 有些问题原创者并没有进行彻底的解答,就一个劲的转载,抄袭,一连几个都是一摸一样的文章,浪费时间。(百度真是够够的)(时间就是金钱,效率就是生命。)请各位大佬能引以为鉴。再次说明:本人所有文章禁止转载!本人所有文章禁止抄袭!

    正文:

    1、python 的requests请求都可以使用timeout参数。

    2、timeout参数可以传入一个简单的浮点数,它将请求的连接部分和读取部分设为相同的超时时间。

    3、timeout参数也可以传入一个包含两个简单浮点数的元组,用来分别设置请求超时时间和读取超时时间。

    下面来用代码进行说明:

    传入简单浮点数:

    import requests

    # 设置超时时间为1秒:

    r = requests.get("https://gethub.com", timeout=1)

    print(r.status_code)

    ------------------------------------------------------------------------

    执行结果:

    requests.exceptions.ConnectTimeout: HTTPSConnectionPool(host='gethub.com', port=443): Max retries exceeded with url: / (Caused by ConnectTimeoutError(, 'Connection to gethub.com timed out. (connect timeout=1)'))

    因为在1秒的连接时间内没有连接到服务器,所以就会报连接超时的错误,如上。

    上方代码仅将timeout参数传入了一个简单浮点数,这个传入值不一定是个整数,也可以是0.1,0.05这些浮点数。

    传入元组:

    import requests

    # 传入元组将分别作为连接,读取的超时时间

    r = requests.get("https://baidu.com", timeout=(0.01, 0.01))

    print(r.status_code)

    ------------------------------------------------------------------------

    执行结果:

    requests.exceptions.ReadTimeout: HTTPSConnectionPool(host='baidu.com', port=443): Read timed out. (read timeout=0.01)

    因为读取时间设置的比较短,所以产生了读取超时错误

    如果想永久等待,可以将timeout的参数值设为None或者不设置该参数:

    r = requests.get("https://baidu.com", timeout=None)

    r = requests.get("https://baidu.com")

    注: 如果你传入三个参数,python会以错误的方式提示你这个参数都有什么传入值如下:

    Pass a (connect, read) timeout tuple, or a single float to set both timeouts to the same value

    ------------------------------------------------------------------------

    翻译:传递(连接、读取)超时元组或单个浮点数,将两个超时设置为相同的值

    后话: 在《python3 网络爬虫开发实战》的136页,

    r = requests.get('https://taobao.com', timeout=(5,11, 30))

    这行代码的timeout参数的传入值是有错误的,就像上边说的,这个传入元组只能是两个元素,三个元素的传入是会产生错误的。

    展开全文
  • Python requests timeout 分析

    万次阅读 2020-09-26 12:58:28
    排查了一圈,最后把问题锁定在 requests 的 timeout 机制上。 注:本文讨论的是 Python 的第三方模块 requests,并不是 Python 内建模块 urllib 中的 request 模块,请注意区分。 如何设置超时时间 requests 设置...

    背景

    最近在搞爬虫,很多小组件里面都使用了 Python 的 requests 库,很好用,很强大。

    但最近发现很多任务总是莫名其妙的卡住,不报错,但是就是不继续执行。

    排查了一圈,最后把问题锁定在 requeststimeout 机制上。

    注:本文讨论的是 Python 的第三方模块 requests,并不是 Python 内建模块 urllib 中的 request 模块,请注意区分。

    如何设置超时时间

    requests 设置超时时间有两种方式。

    一种是设置单一值作为 timeout,如下所示:

    r = requests.get('https://github.com', timeout=5)
    

    这时, timeout 值将会用作 connectread 二者的共同的超时时间。

    另一种是分别制定连接超时和读取超时的时间,如下所示:

    r = requests.get('https://github.com', timeout=(3.05, 27))
    

    这里前面的 3.05 表示连接超时时间,27 表示读取超时时间。

    官方一般推荐大家把连接超时时间设置为比 3 的整数倍稍微大一点的时间,比如 3.056.05 这样,具体原因见 这里

    上面提到的两种超时时间,连接超时和读取超时,并不是都有默认超时时间。

    连接超时的默认时间是 21s,而读取超时没有默认时间,换句话说,不会超时。

    也就是说,如果一个请求,连接成功了,正在读取数据,但是此时服务器出现了什么问题,或者代理出现了什么问题,那么,这个请求就会一直卡住,不会报错,也不会继续。

    天长地久。

    避坑

    所以,为了避免出现这样的情况,给你的 requests 加上超时时间吧,尤其是请求量巨大的时候。

    常在河边走,哪有不湿鞋。

    参考资料

    展开全文
  • timeout参数的使用在某些网络情况不好或者服务器端异常的情况会出现请求慢或者请求异常的情况,这个时候我们需要给请求设置一个超时时间,而不是让程序一直在等待结果。写一个简单的例子:import .requestsresponse ...
  • 需求靠山在python代码的实现中,若是我们有一个需要执行时间跨度非常大的for循环,若是在中心的某处我们需要准时住手这个函数,而不住手整个程序。那么开端的就可以想到两种方案:第一种方案是我们先预估for循环或者...
  • 修改Nginx配置 请求超时:keepalive_timeout、client_header_timeout、client_body_timeout 后端服务器处理请求的时间设置:proxy_connect_timeout、proxy_read_timeout 重启Nginx,下载还是失败!!!看来不是超时...
  • # coding=utf-8 ...def set_timeout(num, callback): def wrap(func): def handle(signum, frame): # 收到信号 SIGALRM 后的回调函数,第一个参数是信号的数字,第二个参数是the interrupted stack frame.
  • def set_timeout(num, callback): def wrap(func): def handle(signum, frame): # 收到信号 SIGALRM 后的回调函数,第一个参数是信号的数字,第二个参数是the interrupted stack frame. raise RuntimeError def ...
  • python request timeout参数设置无效 学习爬虫的过程,写了一个敏感路径探测的脚本,在探测某一URL响应码是否为200的过程中,脚本超时了很久(大概十分钟的样子)才弹出来报错,开始了对timeout参数以及request报错...
  • python之queue使用中timeout讲解。

    千次阅读 2020-10-13 23:42:59
    queue模块中的get()方法有一个可选参数timeout。默认状态下timeout=None,即当队列中没有数据时,程序将处于阻塞等待状态,直到队列中又有数据为止。如果一直没有新的数据加入队列,则程序将出现卡死现象。 下面展示...
  • python中关于requests里的timeout()

    千次阅读 2020-10-18 22:00:15
    ... timeout(超时) 首先是:为防止服务器不能及时响应,大部分发至外部服务器的请求都应该带着 timeout 参数。在默认情况下,除非显式指定了 timeout 值,...如果没有 timeout,你的代码可能会挂起若干分钟甚至更长时间
  • python中 requests.timeout用法

    千次阅读 2019-08-14 14:05:10
    超时(timeout) 为防止服务器不能及时响应,大部分发至外部服务器的请求都应该带着 timeout 参数。在默认情况下,除非显式指定了 timeout 值,requests 是不会自动进行超时处理的。如果没有 timeout,你的代码可能...
  • func_timeout Python模块支持以给定的超时时间运行任何现有功能。 功能超时 func_timeout 这是您传递超时,要调用的函数以及所有参数的函数,并且它最多运行#timeout#秒,并且将返回/引发传递的函数否则将返回或...
  • 通过看网上前辈的博客知道两个模块: func_timeout retrying 这两个模块都是装饰器,第一个能让python函数超时时候抛出一个超时异常,第二...from func_timeout import func_set_timeout import time import fun...
  • param timeout: (optional) How long to wait for the server to send data before giving up, as a float, or a :ref:`(connect timeout, read timeout) <timeouts>` tuple.服务器返回数据前等待的最长时间...
  • Requests 库是基于 urllib3 的,其连接的发起是调用了 urlopen 方法。...在 urllib3中:DEFAULT_TIMEOUT = _GLOBAL_DEFAULT_TIMEOUT而 _GLOBAL_DEFAULT_TIMEOUT 的值是由 python 标准库 socket.py 决定的,在 socke...
  • 如果服务端没及时响应,也不能一直等着,可以设置一个timeout超时的时间关于requests请求的响应时间,官网上没太多介绍,并且我百度搜了下,看很多资料写的是r.elapsed.microseconds获取的,然而都是错的!...
  • 在安装完python3.7和VS code之后,想通过VS code直接调试python代码,但是安装好python扩展之后,一点调试就卡死,直到弹出窗口报错,提示timeout waiting for…之类的 按照博主的说法:...
  • python 使用pip进行安装报install timeout

    千次阅读 2018-07-20 17:13:29
    主要有两种方式进行问题的解决 1.选择国内的镜像来解决问题。  在Windows下: ... C:\Users\Administrator\下新建pip... pip --default-timeout=100 install -U pip   经过测试,第一种方法比较的可行
  • 文件-首选项-设置- 打开seeting.json 添加 "editor.multiCursorModifier": "ctrlCmd", "terminal.integrated.shell.windows": "C:\\WINDOWS\\System32\\cmd.exe"
  • Python中子进程Timeout的使用

    千次阅读 2014-03-17 19:52:43
    Python中并没有Timeout模块,但是在程序中经常遇到需要超时控制的情况。 有两种思路去实现这种Timeout,其一是将需要做超时处理的代码块作为一个独立的子进程来处理,可将其另做一个包含main函数的.py文件。然后使用...
  • Python中线程Timeout的使用

    千次阅读 2014-03-17 21:06:58
    Python中关于Timeout有另一种用起来更简便的方法,即使用装饰器。这种方式是使用sys模块的settrace等方法重构了python的threading类:#!/usr/bin/python import threading import sys class KThread(threading....
  • python爬虫解决timed out 的几种方法

    千次阅读 2019-12-10 10:11:47
    python爬虫解决timed out 的几种方法 在请求量比较大,目标网站承重量有限的情况下可能会出现... 一开始想着增加timeout的大小,但后来发现这样不仅降低了爬取速度,而且并不能有效的解决这种问题,后来在看了看别人...
  • 解决python pip 出现read time out问题

    千次阅读 2020-01-29 18:37:22
    添加 --default-timeout:自定义timeout时间,一般能解决大部分timeout问题,但是无法提升下载速度。 1 pip -default-timeout=1000 -U networkx   解决方法二: 更改pyt...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 248,482
精华内容 99,392
关键字:

pythontimeout

python 订阅