是否可以覆盖请求中的默认套接字选项?

2023-11-21

我使用优秀的 python 请求库为 REST API 编写了一个非常简单的客户端。一切工作都很好,我通过负载平衡器运行客户端,负载平衡器可以正常检测空闲的 tcp 连接并终止它们。我希望我的客户端使用一些与我的平台(Linux)上的默认选项不同的 TCP 保持活动选项。但我没有看到任何简单的方法来告诉套接字库我想为新套接字选择一些默认选项。

当直接使用 socket.create_connection 时,使用装饰器就可以很容易地做到这一点,但我不知道当实际调用被埋在某些第三方库中时(就像请求的情况一样)如何使装饰调用可用。

提前致谢


较新版本的urllib3(自1.8.3起,2014-06-23发布)支持设置套接字选项。

您可以从以下位置设置这些选项requests(自 2.4.0 起,2014-08-29 发布)通过创建自定义适配器:

class HTTPAdapterWithSocketOptions(requests.adapters.HTTPAdapter):
    def __init__(self, *args, **kwargs):
        self.socket_options = kwargs.pop("socket_options", None)
        super(HTTPAdapterWithSocketOptions, self).__init__(*args, **kwargs)

    def init_poolmanager(self, *args, **kwargs):
        if self.socket_options is not None:
            kwargs["socket_options"] = self.socket_options
        super(HTTPAdapterWithSocketOptions, self).init_poolmanager(*args, **kwargs)

然后您可以将此适配器安装到需要自定义套接字选项的会话(例如设置SO_KEEPALIVE):

adapter = HTTPAdapterWithSocketOptions(socket_options=[(socket.SOL_SOCKET, socket.SO_KEEPALIVE, 1)])
s = requests.session()
s.mount("http://", adapter)
s.mount("https://", adapter)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

是否可以覆盖请求中的默认套接字选项? 的相关文章

  • 在函数内的 for 循环上使用 tqdm 来检查进度

    我正在使用 for 循环迭代目录树内的一大组文件 这样做时 我想通过控制台中的进度条来监视进度 因此 我决定使用 tqdm 来实现此目的 目前 我的代码如下所示 for dirPath subdirList fileList in tqdm
  • 从 torch.autograd.gradcheck 导入 zero_gradients

    我想复制代码here https github com LTS4 DeepFool blob master Python deepfool py 并且我在 Google Colab 中运行时收到以下错误 ImportError 无法导入名称
  • docker 容器中的“(pygame parachute)分段错误”

    尝试在 docker 容器中使用 pygame 时出现以下错误 我想从容器中获取显示 Fatal Python error pygame parachute Segmentation Fault 重现 Docker已安装 docker ru
  • 使用管理员权限打开cmd(Windows 10)

    我有自己的 python 脚本来管理我的计算机上的 IP 地址 它主要在命令行 Windows 10 中执行netsh命令 您必须具有管理员权限 这是我自己的计算机 我是管理员 运行脚本时我已经使用管理员类型的用户 Adrian 登录 我无
  • 使用 Python 和 lmfit 拟合复杂模型?

    我想适合椭偏仪 http en wikipedia org wiki Ellipsometry使用 LMFit 将数据转换为复杂模型 两个测量参数 psi and delta 是复杂函数中的变量rho 我可以尝试将问题分离为实部和虚部共享参
  • 将整数系列转换为交替(双元)二进制系列

    我不知道如何最好地表达这个问题 因为在这里谷歌搜索和搜索总是让我找到更复杂的东西 我很确定这是基本的东西 但对于我的生活来说 我找不到一个好的方法来做到这一点下列 给定一个整数序列 比如说 for x in range 0 36 我想将这些
  • 通过 SO_RCVTIMEO 套接字选项在 Ruby 中设置套接字超时

    我试图通过 SO RCVTIMEO 套接字选项在 Ruby 中设置套接字超时 但它似乎对任何最近的 nix 操作系统都没有影响 使用 Ruby 的 Timeout 模块不是一个选择 因为它需要为每个超时生成和连接线程 这可能会变得昂贵 在需
  • Python Selenium 打印另存为 PDF 等待文件名输入

    我正在尝试通过打印对话框将网站另存为 PDF 我的代码允许我另存为pdf 但要求我输入文件名 我不知道如何将文件名传递到弹出框 附上我的代码 import time from selenium import webdriver import
  • NSUserNotificationCenter.defaultUserNotificationCenter() 使用 PyInstaller 返回 None

    我正在尝试将通知发送到通知中心 Mac OSX 我正在使用 PyObjC 绑定来使用我们的 python 应用程序中的 cocoa api 我正在使用以下代码片段 import Foundation import objc NSUserNo
  • 了解 Python 2.7 中的缩进错误

    在编写 python 代码时 我往往会遇到很多缩进错误 有时 当我删除并重写该行时 错误就会消失 有人可以为菜鸟提供 python 中 IndentationErrors 的高级解释吗 以下是我在玩 CheckIO 时收到的最近 inden
  • 使用 python 脚本更改 shell 中的工作目录

    我想实现一个用户态命令 它将采用其参数之一 路径 并将目录更改为该目录 程序完成后 我希望 shell 位于该目录中 所以我想实施cd命令 但需要外部程序 可以在 python 脚本中完成还是我必须编写 bash 包装器 Example t
  • Python:导入模块一次然后与多个文件共享

    我有如下文件 file1 py file2 py file3 py 假设这三个都使用 lib7 py lib8 py lib9 py 目前 这三个文件中的每一个都有以下行 import lib7 import lib8 import lib
  • Python脚本从字母和两个字母组合生成单词

    我正在编写一个简短的脚本 它允许我使用我设置的参数生成所有可能的字母组合 例如 b a 参数 单词 5 个字母 第三 第五个字母 b a 第一个字母 ph sd nn mm 或 gh 第二 第四个字母 任意元音 aeiouy 和 rc 换句
  • 如何将 URL 添加到 Telegram Bot 的 InlineKeyboardButton

    我想制作一个按钮 可以从 Telegram 聊天中在浏览器中打开 URL 外部超链接 目前 我只开发了可点击的操作按钮 update message reply text Subscribe to us on Facebook and Te
  • 在Python中使用pil读取tif图像时出现值错误?

    我必须读取尺寸的tif图像2200 2200并输入 uint16 我将 PIL 库与 anaconda python 一起使用 如下所示 from PIL import Image img Image open test tif img i
  • 如何在引发异常时将变量传递给异常并在异常时检索它?

    现在我只有一个空白的异常类 我想知道如何在引发变量时给它一个变量 然后在 try except 中处理它时检索该变量 class ExampleException Exception pass 为其构造函数提供一个参数 将其存储为属性 然后
  • 用 pandas DataFrame 替换 mysql 数据库表中的行

    Python 版本 2 7 6 熊猫版本 0 17 1 MySQLdb 版本 1 2 5 在我的数据库中 PRODUCT 我有一张桌子 XML FEED 表 XML FEED 很大 数百万条记录 我有一个 pandas DataFrame
  • SQLAlchemy 与 count、group_by 和 order_by 使用 ORM

    我有几个函数需要使用 count group by 和 order by 进行一对多连接 我使用 sqlalchemy select 函数生成一个查询 该查询将返回一组 id 然后我对其进行迭代以对各个记录执行 ORM 选择 我想知道是否有
  • PyQt5按钮lambda变量变成布尔值[重复]

    这个问题在这里已经有答案了 当我运行下面的代码时 它显示如下 为什么 x 不是 x 而是变成布尔值 这种情况仅发生在传递到用 lambda 调用的函数中的第一个参数上 错误的 y home me model some file from P
  • Tkinter 将鼠标点击绑定到框架

    我一定错过了一些明显的东西 我的 Tkinter 程序中有两个框架 每个框架在网格布局中都有一堆标签 我想将鼠标点击绑定到其中一个而不是另一个 我目前使用 root bind

随机推荐

  • 使用Python识别监听端口

    在从 bash 翻译一些脚本时 我遇到了许多使用 netstat an 来查找我们的服务之一是否正在侦听的情况 虽然我知道我可以只使用 subprocess call 或其他甚至 popen 我宁愿使用 pythonic 解决方案 所以我没
  • 对于登录 GET 还是 POST? [复制]

    这个问题在这里已经有答案了 我想知道我使用哪种 HTTP 方法来开发登录 API GET 还是 POST 我已经使用 post 方法在 PHP 中开发了登录 API 但是我的老板说 为什么你使用 POST 方法而不是 GET 方法 Alwa
  • 跨线程操作无效:从创建它的线程以外的线程访问控制“label1”[重复]

    这个问题在这里已经有答案了 可能的重复 为什么我会收到此错误 跨线程操作无效 控制 lbFolders 从创建它的线程以外的线程访问 我是 winforms 的新手 在我的代码中 我正在使用 for 循环更新进度条 现在我需要更新循环计数表
  • 在方法(Java 中)中改变对象参数是一种不好的做法吗?

    我有一个关于改变方法中的方法参数 它们是对象 的问题 我多次阅读和听到 在作为参数传入的方法中改变对象是一种不好的做法 例如 public void modifyList List list list add new Object 相反 应
  • jQuery 单击文档事件但忽略 div

    我正在使用 jQuery 制作在线幻灯片 我使用 document click 事件来检测用户何时单击页面 以了解何时显示幻灯片中的下一个项目符号点或移至下一页 我遇到的问题是我的工作让我在页面底部插入一个评论框 当有人单击评论框或保存评论
  • 使用 openssl 链接编译 Qt5 时出错

    我的头很快就会爆炸 我想用 openssl linked 编译 qt 以便 openssl 库链接到 qt 库中 我已经尝试了很多选项 编译时的输出始终是 ssl qsslcertificate openssl cpp In functio
  • Thymeleaf th:href 参数中的条件

    所以我的 Thymeleaf 模板中有一个元素 其中有一个如下所示的链接 th href search searchType parameter1 parameter1 parameter10 parameter10 根据目前的实施情况pa
  • 为什么在 JavaScript 中使用 {} != ( {} )?

    众所周知 是定义对象的更短方法 例如 用于数组 但现在我想知道为什么 计算结果为未定义 评估为 正确 对象 为什么 JavaScript 会有这样的行为 例如1等于 1 所以为什么 不等于 这是一个语法错误 语法错误 意外的标记 就是这样暧
  • 如何从目录中获取子文件夹中的文件

    您好 我必须从目录中的指定路径获取文件 这是我写的方法 但我没有从子文件夹中获取文件 Private void getfiles Directoryinfo info new Directoryinfo configurationmanag
  • 完全覆盖的代码的 EclEmma 覆盖率是否可以低于 100%?

    我只是编写了一些简单的示例代码来确保我正确安装了 EclEmma 我没有获得 100 的覆盖率 我不明白为什么 突出显示意味着它与类名有关 这是我的代码 以及相应的 JUnit 测试 EclEmma 突出显示了它 覆盖率结果显示 三个指令A
  • Tkinter grid_forget 正在清除框架

    from tkinter import from PIL import ImageTk Image root Tk root title Image Viewer def buttonforward image number global
  • 此按钮单击在 WPF MVVM 中如何工作?

    我开始研究WFM MVVM模式 但我不明白为什么会这样Buttonclick 无需绑定任何事件或操作即可工作 View
  • SwiftUI 自定义 TextField 与 UIViewRepresentable 与 ObservableObject 和推送视图的问题

    我创建了一个UIViewRepresentable包裹UITextField对于 SwiftUI 所以我可以例如当用户点击回车键时更改第一响应者 这是我的 UIViewRepresentable 我删除了第一响应者代码以保持简单 struc
  • 使用 ngTemplateOutlet 基于值而不是变量的动态模板

    我正在尝试模拟一组动态问题 想想一个测验 其中一个问题是多项选择 第二个是单一答案 第三个是是否 等等 使用 Angular 4 1 我认为使用 ngTemplateOutlet 进行模板化将是最好的方法 这个想法是我可以将所有复选框的样式
  • Haskell 中判断一棵树是否为二叉搜索树

    type BSTree a BinaryTree a data BinaryTree a Null Node BinaryTree a a BinaryTree a deriving Show flattenTree BinaryTree
  • 在字符串中使用变量

    在 PHP 中我可以执行以下操作 name John var Hello name gt Hello John C 中是否有类似的语言结构 我知道有String Format 但我想知道是否可以在不调用字符串上的函数 方法的情况下完成 在
  • 在 Windows 中安装 scipy 包

    我想安装 scipy 软件包 我知道这是一个重复的问题 但我已经尝试了所有这些 但没有找到合适的解决方案 当写这个 导入 scipy它执行成功 但是当我尝试这个时 import scipy spatial 我收到这条消息 Traceback
  • 如何更改导航栏标题位置?

    我已经设法使用自己的导航栏更改导航栏高度 但标题仍然居中 我希望它位于距左侧 72px 的位置 override func sizeThatFits size CGSize gt CGSize return CGSizeMake UIScr
  • 使用 XDocument 获取大写的 UTF-8

    我需要在我正在制作的 XML 文档的顶部有 XML 编码和版本XDocument 我有这个 但它是小写的 并且需要是大写的 我需要做什么 我使用以下方法声明一个新的 XML 文档XDocument名为 doc 的类 我使用以下命令将其保存到
  • 是否可以覆盖请求中的默认套接字选项?

    我使用优秀的 python 请求库为 REST API 编写了一个非常简单的客户端 一切工作都很好 我通过负载平衡器运行客户端 负载平衡器可以正常检测空闲的 tcp 连接并终止它们 我希望我的客户端使用一些与我的平台 Linux 上的默认选