在多个操作中使用一个总超时

totaltimeout的Python项目详细描述


在多个操作中使用一个总超时。

正确有效地将一个超时扩展到多个步骤 重新计算等待一段时间后的剩余时间 已经发生,将调整后的超时传递给下一个调用。

版本控制

这个库的版本号跟在SemVer 2.0.0 specification后面。

当前版本号在变量__version__中可用, 对于python模块来说,这是正常的。

安装

pip install totaltimeout

用法

导入Timeout类。

fromtotaltimeoutimportTimeout

在“定时循环”中等待API并重试:

fortime_leftinTimeout(SOME_NUMBER_OF_SECONDS):reply=requests.get(some_flaky_api_url,timeout=time_left)ifreply.status==200:breaktime.sleep(some_retry_delay)

等待多个任务完成:

timeout=Timeout(10.0)my_thread_foo.join(timeout.time_left())my_thread_bar.join(timeout.time_left())my_thread_qux.join(timeout.time_left())# Waits at most ten seconds total for all three threads, but# waits the full ten seconds if *any* thread takes that long.

在“定时循环”的每个迭代中等待多个任务 (结合以上两个例子):

timeout=Timeout(SOME_NUMBER_OF_SECONDS)fortime_leftintimeout:foo.some_work(timeout=time_left)# The first timeout can be *either* be the for loop value or# the ``time_left()`` method. The rest *have to be* the latter.foo.more_work(timeout=timeout.time_left())some_other_work(timeout=timeout.time_left())

高级使用说明

Timeout使用time.monotonic作为默认时间函数, 如果time.monotonic不可用,则返回time.time

您可以通过将callable作为第二个参数传入来覆盖它。

例如,如果您安装了 monotonic backport

frommonotonicimportmonotonictimeout=Timeout(10.0,now=monotonic)

任何以秒为单位返回时间作为浮点值的可调用函数 作为接口的一部分支持 兼容性保证。

但是,any可调用函数返回的时间值可以是 相互相减以产生持续时间值,进而可以 相互减去并与零进行比较应该有效,并且 只需要秒,因为python的惯用超时单位 是秒。如果timeoutnow和用法一致,则 符合这些标准的选择可能会奏效。

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java LineNumberReader。如果查询行为不正确,则返回readLine()   java包含了一个使用AndroidX的工具栏,这让我的应用程序崩溃了   JVM设置通过“java jar”运行应用程序的最佳实践   java如何获取ImageButton宽度   java Oracle SQLLDR实用程序无响应   列出Java获取对象的arrayList中最常见的元素   java使用带有FlowLayout的getContentpane对布局应用更改,但不起作用为什么?   在java中,我可以在画布上绘制画布吗?   编译游戏代码时发生java异常错误   从firestore获取java Webview失败   java将TableLayout中单元格的内容向右对齐   java无法在发布模式下启动活动(使用proguard安卓optimize配置)   java允许在线程期间进行GUI更新。睡觉   java如何对以变量为列表的列表进行排序   API URL上的java Google云端点异常