使用请求库的重试历史记录

2023-12-09

我正在我的 Orchestrate 脚本中构建一个新的重试功能,我想知道尝试连接到特定 URL 时我的请求方法发生了多少次,以及(如果可能)发生了什么错误。

现在,我需要这个用于记录目的,因为我正在开发一个消息系统,一旦我在一个消息系统中工作,我可能需要这个“重试”信息来了解我何时以及为何在 HTTP 请求中遇到任何类型的问题。微服务环境。

到目前为止,我调试并证明重试按预期工作(我有一个用于我们使用的所有微服务的模拟烧瓶服务器),但我找不到获取“重试历史记录”数据的方法。

换句话说,例如我想看看某个特定的微服务是否只能在第三个请求之后响应,诸如此类的事情。

下面是我现在使用的代码:

from requests import exceptions, Session
from urllib3.util.retry import Retry
from requests.adapters import HTTPAdapter

def open_request_session():
    # Default retries configs
    toggle = True #loaded from config file

    session = Session()

    if toggle:

        # loaded from config file as 
        parameters = {'total': 5, 
                      'backoff_factor': 0.0, 
                      'http_error_to_retry': [400]}well

        retries = Retry(total=parameters['total'],
                        backoff_factor=parameters['backoff_factor'],
                        status_forcelist=parameters['http_error_to_retry'],
                        # Do not force an exception when False
                        raise_on_status=False)

        session.mount('http://', HTTPAdapter(max_retries=retries))
        session.mount('https://', HTTPAdapter(max_retries=retries))

    return session

# Request
    with open_request_session() as request:
        my_response = request.get(url, timeout=10)

我在 urllib3 中看到文档重试有一个历史属性,但是当我尝试查阅该属性时它是空的。

一旦软件开发不是我最好的技能,我不知道我是否做错了或忘记了什么。

所以,我有两个问题:

  1. 有谁知道如何获取此历史信息?
  2. 如何创建测试来验证重试行为是否按预期工作? (到目前为止我只在调试模式下测试)

我正在使用Python 3.6.8。

我知道我可以创建一个 while 语句来“控制”它,但我试图避免复杂性。这就是我来这里的原因,我正在寻找基于 Python 和社区最佳实践的替代方案。


有点晚了,但我自己才发现这一点,所以我想分享我的发现。

简短回答:

response.raw.retries.history

会给你你正在寻找的东西。

长答案:

你无法摆脱原始历史Retry实例已创建。在幕后,urllib3创建一个新的Retry每次尝试的实例。

urllib3是否存储最后一个Retry返回时响应上的实例。然而,来自requests库是一个包装器urllib3回复。幸运的是,requests存储原始的urllib3的回应raw field.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用请求库的重试历史记录 的相关文章

  • 重新索引错误没有意义

    I have DataFrames大小在 100k 到 2m 之间 我正在处理这个问题的框架是如此之大 但请注意 我必须对其他框架执行相同的操作 gt gt gt len data 357451 现在这个文件是通过编译许多文件创建的 所以它
  • 如何为 Intellij/PyCharm 设置 PYTHONSTARTUP 脚本

    我尝试添加PYTHONSTARTUP环境变量 我还尝试了自定义启动脚本 但更令人惊讶的是 这also没有工作 npa别名无法识别 出于一点绝望 我什至尝试添加到interpreter options 那什么也没做 实际上是什么Interpr
  • 我应该为 MySQL 使用什么 python 3 库? [关闭]

    Closed 此问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 据我所知 MySQLdb 仍然没有移植到 Python 3 pypy 上似乎有另一个名为 PyMySQL
  • OpenCV - 我需要将彩色图像插入黑白图像并且

    我用以下代码将黑白图像插入彩色图像 没问题 face grey cv cvtColor face cv COLOR RGB2GRAY for row in range 0 face grey shape 0 for column in ra
  • 使用 boto3 从 s3 下载时使用 filename 作为文件名

    我正在使用 boto3 上传文件 如下所示 client boto3 client s3 aws access key id id aws secret access key key client upload file tmp test
  • 如何在Python中求和

    我想知道如何在 python 中表示总和而不需要像这样的循环here http docs scipy org doc scipy reference tutorial optimize html 我们有 def rosen x The Ro
  • Flask 中的 import 和 extends 有什么区别?

    我正在阅读 Flask Web 开发 在例4 3中 extends base html import bootstrap wtf html as wtf 我想知道 extends 和 import 有什么区别 我认为它们在用法上很相似 在什
  • python-polars 通过分隔符将字符串列拆分为许多列

    在 pandas 中 以下代码会将 col1 中的字符串拆分为许多列 有没有办法在极地做到这一点 d col1 a b c d a b c d df pd DataFrame data d df a b c d df col1 str sp
  • python:是否有用于对输入流进行分块的库函数?

    我想对输入流进行分块以进行批处理 给定一个输入列表或生成器 x in 1 2 3 4 5 6 我想要一个能够返回该输入块的函数 说 如果chunk size 4 then x chunked 1 2 3 4 5 6 这是我一遍又一遍地做的事
  • PyCharm 无法识别字典值类型

    我有一个简单的代码片段 其中我将字典值设置为空列表 new dict for i in range 1 13 new dict i 现在 如果在下一行的循环内我会输入new dict i 并添加一个点 我希望 PyCharm 向我显示可用于
  • pandas to_sql sqlalchemy 与 secure_transport 的连接

    我正在尝试将数据发送到具有 require secure transport ON 的服务器上的 mysql 数据库 当我尝试使用以下代码连接到它时 import pandas as pd import pymysql from sqlal
  • 如何删除 pandas 数据框中的唯一行?

    我遇到了一个看似简单的问题 在 pandas 数据框中删除唯一的行 基本上 相反drop duplicates https pandas pydata org pandas docs stable generated pandas Data
  • 使用 Python 脚本打开特定文件类型?

    如何使 Python 脚本成为特定文件类型 例如 foo 的默认应用程序 例如 当我双击 Finder Explorer 中的文件时 我希望该文件在 Python 脚本中打开 这可以在 Win 和 或 OS X 中实现吗 如果重要的话 该应
  • psycopg 错误,列不存在

    我不断收到这个 错误 psycopg2 ProgrammingError 列 someentry 不存在 该错误表明该列someentry不存在时someentry不是列 它只是要输入数据库的值 这是给出错误的代码 cur execute
  • 如何在 Sublime 2 REPL Mac 中运行 Python 3

    我的问题如下 我安装了 sublime 2 和 sublime repl 插件 一切正常 我唯一需要的是更改在控制台内置的 sublimerepl 上运行的 python 版本 我的意思是 我有 python 2 7 5 预先安装了 mav
  • 如何加速 pandas 字符串函数?

    我正在使用 pandas 矢量化 str split 方法来提取从 上的拆分 返回的第一个元素 我还尝试使用 df apply 与 lambda 和 str split 来产生等效的结果 使用 timeit 时 我发现 df apply 的
  • Scrapy的redirect_urls异常.KeyError

    我是 Scrapy 和 Python 的新手 最近推出了我的第一个蜘蛛 有一个功能似乎以前有效 但现在它只适用于我试图废弃的一些网站 代码行是 item url direct response request meta redirect u
  • Python 队列 get()/task_done() 问题

    我的消费者端队列 m queue get queue task done
  • 如何限制scrapy请求对象?

    所以我有一个蜘蛛 我认为它正在泄漏内存 结果当我检查 telnet 控制台 gt gt gt prefs 时 它只是从链接丰富的页面中抓取了太多链接 有时它会超过 100 000 个 现在我已经一遍又一遍地浏览文档和谷歌 但我找不到一种方法
  • Matplotlib 中的 TwoSlopeNorm 未按预期工作

    我正在尝试创建一个具有发散颜色图的绘图 该颜色图在零附近不对称 In this https stackoverflow com a 20146989 6288682例如 DivergingNorm函数被使用并产生我想要的 然而 我使用的是更

随机推荐

  • 如何更改 Firebase 中的登录尝试次数?

    我是一名移动开发人员 我在我的应用程序中使用 firebase 该应用程序是使用 Cordova 和 Ionic 框架构建的 所以 我实现了 Firebase Auth 功能 例如登录 注册 电子邮件验证 忘记密码等 但我今天在使用应用程序
  • UITableView.tableFooterView 内的 UIPickerView 不接收拖动触摸

    我在表格的页脚中有一个 UIPickerView 我计划从中发出表格的 分页 样式请求 选择器将列出我正在导航的大型数据集的可用页面 并让用户跳转直接到数据的任何 页面 我的选择器收到点击 如果我点击不是选定的选择器的一行 它就会滚动到选择
  • Java 日期格式?

    我想读取 YYYY MM DD 格式的日期 但如果我输入日期 例如 2008 1 1 我想将其读为 2008 01 01 有谁能够帮助我 提前致谢 或者使用更好的乔达时间 lib DateTime dt new DateTime Syste
  • 从 WooCommerce 中的另一个脚本添加客户注释

    我有一个脚本可以根据我们的 ERP 系统更改订单状态 除此之外 我们还需要添加客户注释 我找到了这样做的方法 order gt add order note note order gt save 不幸的是 这在订单编辑屏幕之外不起作用 我尝
  • python中嵌套字典的列表

    我有一个清单如下 item1 item2 item3 item4 我想从上面的列表构建一个字典 如下所示 item1 item2 item3 item4 列表中的项目数是动态的 该字典将是一个嵌套字典 直到到达列表的最后一个元素 pytho
  • 如何在C#控制台中读取用户输入

    我想这对你们来说应该很简单 但对我来说非常困难 因为我是 C 新手 我有一个简单的 耐心 课程 public class Pacient public Pacient string name string lastName DateTime
  • 没有带有 createElement/appendChild 的自动化 tbody?

    使用 javascript createElement appendChild 创建一个没有 tbody 的表不会在 Firebug 中添加 tbody 但使用 innerHTML 可以做到这一点 为什么 我们应该手动添加 tbody 吗
  • 如何“组合”两个静态库?

    所以我知道你不能将一个静态库依赖于另一个静态库 但我想知道是否有什么东西可以让我将它们组合在一起 我正在尝试在 vstudio 2019 中设置游戏引擎项目文件 我想将其编译为静态库 我需要以某种方式将它与 SDL 2 库结合起来 因为我想
  • 使用 NetworkX 将图形导出到带有节点位置的 graphml

    我正在使用 NetworkX 1 9 1 我有一个图表 需要用位置来组织 然后导出为 graphml 格式 我试过代码这个问题 它不起作用 这是我的例子 import networkx as nx import matplotlib pyp
  • Windows Phone 8 Ionic 应用程序导航问题(混合应用程序)

    我正在使用 Ionic 开发适用于 Android 和 WP8 的混合应用程序 它在 Android 平台上运行良好 但当我最近在 WP8 上使用它时 它向我展示了 您需要安装一个应用程序来执行此任务 您想搜索 商店里有一件吗 当我单击某些
  • UnobservedTaskException 被抛出,但由 TaskScheduler.UnobservedTaskException 处理程序和延续 OnlyOnFaulted 处理程序处理[重复]

    这个问题在这里已经有答案了 我在 TPL 编程方面遇到问题 我在使用 h4165f8ghd4f854d6f8h 解决方案时遇到 UnobservedTaskException http stackoverflow com questions
  • 如何在不接触数据库的情况下创建这两个实体之间的关联?

    我需要创建一个 虚拟 association在这两个实体 1 之间 以便我可以使用linq 但问题是我无法触及数据库 我尝试过手动编辑edmx很多次都没有成功 出现各种映射错误 EDMX
  • 将两个 python 装饰器合二为一

    这是我想组合的两个装饰器 因为它们非常相似 区别在于如何处理未经身份验证的用户 我更喜欢有一个可以通过参数调用的装饰器 Authentication decorator for routes Will redirect to the log
  • 不带 \n 的 printf 放置在 while(1) 之前时不显示文本 [重复]

    这个问题在这里已经有答案了 可能的重复 为什么 printf 在调用后不会刷新 除非格式字符串中有换行符 在C中 我在做一个网络项目时遇到了这个问题 我能够缩小问题范围并像这样重现它 如果运行此代码 它不会在屏幕上显示文本 尽管如果您将 n
  • elasticsearch与neo4j数据库的集成

    我正在尝试将elasticsearch与我的neo4j数据库一起使用以进行快速查询 我尝试了很多网站 但它们都是旧文章 所以我没有任何明确的想法 到目前为止我遵循的步骤 安装了neo4j 安装了elasticsearch 将粘贴的弹性搜索插
  • 翻译 JQuery Mobile 小部件

    Using i18next 如何翻译 JQuery Mobile 小部件 具体来说 我想知道如何在不诉诸使用的情况下做到这一点data i18n target修改生成的内部元素 因为这很脆弱 因为未来的小部件版本可能会更改生成的代码 是否有
  • 有没有办法将多个命令输出复制到剪贴板?

    我有 4 个命令链接在一起 我想立即将所有四个命令的输出复制到剪贴板 基本上将每个命令的输出附加到剪贴板 这可能吗 我正在运行的命令是这样的 ipconfig findstr IPv4 systeminfo findstr B C OS N
  • 使用 Shell 函数运行 exe 时出现文件未找到错误

    我正在从用户表单运行一个子程序 该子程序应该运行在工作文件夹中找到的 exe 文件 如下所示 Sub RunProcessor If MsgBox Run simulation vbYesNo vbNo Then Exit Sub Else
  • C# Graphics.CopyFromScreen“参数无效”

    我用 C 制作了一个应用程序 它将连续执行屏幕捕获并使用计时器将其显示在 PictureBox 中 运行几秒后 出现ArgumentException 下面是代码和具有 ArgumentException 的行 private void t
  • 使用请求库的重试历史记录

    我正在我的 Orchestrate 脚本中构建一个新的重试功能 我想知道尝试连接到特定 URL 时我的请求方法发生了多少次 以及 如果可能 发生了什么错误 现在 我需要这个用于记录目的 因为我正在开发一个消息系统 一旦我在一个消息系统中工作