python 做的request模块封装工具类

2023-05-16

1.python 做的request模块封装工具类

记录下,避免以后用到。


import time
from requests.adapters import HTTPAdapter
import json
import requests
from requests import exceptions

class HttpRequests(object):
     """
     eg: request = HttpRequests()
         response = request(method, url, data)
         or
         response = request.send_request(method, url, data)
         print(response.text)
    """
     def __init__(self):
        self.session = requests.Session()
        self.session.mount('http://', HTTPAdapter(max_retries=3))
        self.session.mount('https://', HTTPAdapter(max_retries=3))
        # exceptions.Timeout

     def send_request(self, method, url, data=None, params_type='JSON',  **kwargs):
         """
         request 请求封装 默认使用json格式
         """
         method = method.upper()
         params_type = params_type.upper()
         if isinstance(data, str):
             try:
                 data = json.loads(data)
             except Exception:
                     data = eval(data)
         if 'GET' == method:
             response = self.session.request(method=method, url=url, params=data, **kwargs)
         elif 'POST' == method:
             if params_type == 'FORM':  # 发送表单数据,使用data参数传递
                 response = self.session.request(method=method, url=url, data=data, **kwargs)
             elif params_type == 'JSON':  # 如果接口支持application/json类型,则使用json参数传递
                 response = self.session.request(method=method, url=url, json=data, **kwargs)
             else:  # 如果接口需要传递其他类型的数据比如 上传文件,调用下面的请求方法
                 response = self.session.request(method=method, url=url, **kwargs)
         elif 'PUT' == method:
             if params_type == 'FORM':  # 发送表单数据,使用data参数传递
                 response = self.session.request(method=method, url=url, data=data, **kwargs)
             elif params_type == 'JSON':  # 如果接口支持application/json类型,则使用json参数传递
                 response = self.session.request(method=method, url=url, json=data, **kwargs)
             else:  # 如果接口需要传递其他类型的数据比如 上传文件,调用下面的请求方法
                 response = self.session.request(method=method, url=url, **kwargs)
         elif 'DELETE' == method:
             if params_type == 'FORM':  # 发送表单数据,使用data参数传递
                 response = self.session.request(method=method, url=url, data=data, **kwargs)
             elif params_type == 'JSON':  # 如果接口支持application/json类型,则使用json参数传递
                 response = self.session.request(method=method, url=url, json=data, **kwargs)
             else:  # 如果接口需要传递其他类型的数据比如 上传文件,调用下面的请求方法
                 response = self.session.request(method=method, url=url, **kwargs)
         # 如果请求方式非 get 和post 会报错,当然你也可以继续添加其他的请求方法
         else:
             raise ValueError('request method "{}" error ! please check'.format(method))

         return response

     def __call__(self, method, url, data=None, params_type='JSON',  **kwargs):
         return self.send_request(method, url,
                                  data=data,
                                  params_type=params_type,
                                  **kwargs)

     def close_session(self):
         self.session.close()
         try:
             del self.session.cookies['JSESSIONID']
         except:
             pass

     def __del__(self):
         self.close_session()


def get_content(response=None):
    if response:
        return response.data if response.code == 200 else None
    return None

具体参考哪位的代码,忘记了,见谅。

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

python 做的request模块封装工具类 的相关文章

  • 从数据框中按索引删除行

    我有一个数组wrong indexes train其中包含我想从数据框中删除的索引列表 0 63 151 469 1008 要删除这些索引 我正在尝试这样做 df train drop wrong indexes train 但是 代码失败
  • Python Popen 与 psexec 挂起 - 不良结果

    我对 subprocess Popen 和我认为是管道的问题有疑问 我有以下代码块 从 cli 运行时 100 都不会出现问题 p subprocess Popen psexec serverName get cmd c ver echo
  • python future 和元组解包

    实现像使用 future 进行元组解包这样的事情的优雅 惯用的方法是什么 我有这样的代码 a b c f x y g a b z h y c 我想将其转换为使用期货 理想情况下我想写一些类似的东西 a b c ex submit f x y
  • pydev 调试器:严重警告:此版本的 python 似乎编译不正确(内部生成的文件名不是绝对的)[重复]

    这个问题在这里已经有答案了 通过运行 from sklearn datasets import fetch california housing import pandas as pd pd set option precision 4 m
  • python 模拟第三方模块

    我正在尝试测试一些处理推文的类 我使用 Sixohsix twitter 来处理 Twitter API 我有一个类充当 Twitter 类的外观 我的想法是模拟实际的 Sixohsix 类 通过随机生成新推文或从数据库检索它们来模拟推文的
  • 通过列表理解压平列表列表

    我正在尝试使用 python 中的列表理解来展平列表 我的清单有点像 1 2 3 4 5 6 7 8 只是为了打印这个列表列表中的单个项目 我编写了这个函数 def flat listoflist for item in listoflis
  • 将数据帧行转换为字典

    我有像下面的示例数据这样的数据帧 我正在尝试将数据帧中的一行转换为类似于下面所需输出的字典 但是当我使用 to dict 时 我得到了索引和列值 有谁知道如何将行转换为像所需输出那样的字典 任何提示都非常感激 Sample data pri
  • Django 模型在模板中不可迭代

    我试图迭代模型以获取列表中的第一个图像 但它给了我错误 即模型不可迭代 以下是我的模型和模板的代码 我只需要获取与单个产品相关的列表中的第一个图像 模型 py class Product models Model title models
  • if 语句未命中中的 continue 断点

    在下面的代码中 两者a and b是生成器函数的输出 并且可以评估为None或者有一个值 def testBehaviour self a None b 5 while True if not a or not b continue pri
  • Pandas 中允许重复列

    我将一个大的 CSV 包含股票财务数据 文件分割成更小的块 CSV 文件的格式不同 像 Excel 数据透视表之类的东西 第一列的前几行包含一些标题 公司名称 ID 等在以下列中重复 因为一家公司有多个属性 而不是一家公司只有一栏 在前几行
  • 从零开始的 numpy 形状意味着什么

    好的 我发现数组的形状中可以包含 0 对于将 0 作为唯一维度的情况 这对我来说是有意义的 它是一个空数组 np zeros 0 但如果你有这样的情况 np zeros 0 100 让我很困惑 为什么这么定义呢 据我所知 这只是表达空数组的
  • 为什么在 Python 2.4 中使用 Unicode 数据会出现 ASCII 编码错误,而在 2.7 中却不会?

    我有一个程序 当在 Python 2 7 中运行时 会生成正确的 Unicode 输出到标准输出 当在 Python 2 4 中运行时 我得到UnicodeEncodeError ascii codec can t encode chara
  • Numpy 过滤器平滑零区域

    我有一个 0 及更大整数的 2D numpy 数组 其中值代表区域标签 例如 array 9 9 9 0 0 0 0 1 1 1 9 9 9 9 0 7 1 1 1 1 9 9 9 9 0 2 2 1 1 1 9 9 9 8 0 2 2 1
  • 首先对列表中最长的项目进行排序

    我正在使用 lambda 来修改排序的行为 sorted list key lambda item item lower len item 对包含元素的列表进行排序A1 A2 A3 A B1 B2 B3 B 结果是A A1 A2 A3 B
  • 在 pytube3 中获取 youtube 视频的标题?

    我正在尝试构建一个应用程序来使用 python 下载 YouTube 视频pytube3 但我无法检索视频的标题 这是我的代码 from pytube import YouTube yt YouTube link print yt titl
  • 如何在 python 中没有 csv.reader 迭代器的情况下解析单行 csv 字符串?

    我有一个 CSV 文件 需要重新排列和重新编码 我想跑 line line decode windows 1250 encode utf 8 在由 CSV 读取器解析和分割之前的每一行 或者我想自己迭代行 运行重新编码 并仅使用单行解析表单
  • 无法在 osx-arm64 上安装 Python 3.7

    我正在尝试使用 Conda 创建一个带有 Python 3 7 的新环境 例如 conda create n qnn python 3 7 我收到以下错误 Collecting package metadata current repoda
  • Tkinter - 浮动窗口 - 调整大小

    灵感来自this https stackoverflow com a 22424245 13629335问题 我想为我的根窗口编写自己的调整大小函数 但我刚刚注意到我的代码显示了一些性能问题 如果你快速调整它的大小 你会发现窗口没有像我希望
  • 如何为每个屏幕添加自己的 .py 和 .kv 文件?

    我想为每个屏幕都有一个单独的 py 和 kv 文件 应通过 main py main kv 中的 ScreenManager 选择屏幕 设计应从文件 screen X kv 加载 类等应从文件 screen X py 加载 Screens
  • 迭代 pandas 数据框的最快方法?

    如何运行数据框并仅返回满足特定条件的行 必须在之前的行和列上测试此条件 例如 1 2 3 4 1 1 1999 4 2 4 5 1 2 1999 5 2 3 3 1 3 1999 5 2 3 8 1 4 1999 6 4 2 6 1 5 1

随机推荐

  • JetsonNano配置RealSense D435i运行环境

    JetsonNano配置RealSense D435i运行环境 文章目录 JetsonNano配置RealSense D435i运行环境0 前言1 系统环境2 安装ubuntu源自带的SDK问题及解决问题解决方法 xff1a 3 源码编译S
  • LSTM详解

    LSTM详解 文章目录 LSTM详解改进记忆单元门控机制 LSTM结构LSTM的计算过程遗忘门输入门更新记忆单元 输出门LSTM单元的pytorch实现Pytorch中的LSTM参数输入输出 参考与摘录 LSTM是RNN的一种变种 xff0
  • 固定翼无人机结构分类

    一 固定翼无人机常见的气动布局 常规布局 常规布局就是水平尾翼在主翼之后 xff0c 有一个或者两个垂危的气动布局方式 这种布局技术最成熟 xff0c 理论研究已经非常完善 xff0c 生产技术也成熟而稳定 xff0c 同其他气动布局相比各
  • 互联网笔试——服务器启动题

    某厂笔试题 xff0c 居然瞎胡做出来了 xff0c 先把不优雅得答案记录一下 第一行n xff0c p表示有n台机器 xff0c p次操作 第 i 行第一个整数 c 表示第 i 个服务所依赖的服务数量 xff0c 后面 c 个整数表示它所
  • Kubernetes的Secret和ConfigMap实践

    欢迎大家进群 xff0c 一起探讨学习 公众号 博主技术文档地址 博主开源微服架构前后端分离技术博客项目源码地址 xff0c 欢迎各位star 1 Secret Secret解决了密码 token 密钥等敏感数据的配置问题 xff0c 而不
  • 【KAWAKO】TVM-在ubuntu服务器上的安装

    目录 下载源码 安装依赖库 修改config cmake文件 编译 安装python库 添加tophub 简单验证 官方的安装教程在这里 下载源码 从Download Page中下载下来的源码是0 8版本的 xff0c 亲测该版本不可用 x
  • 【Ubuntu 无法使用ifconfig解决办法】

    Ubuntu 无法使用ifconfig解决办法 在使用ubuntu时需要使用ifconfig命令提示 Command span class token char 39 ifconfig 39 span span class token op
  • Jetson tx2刷机指南及gparted扩容全踩坑实录

    这几周试了下jetson tx2刷机 xff0c 出了很多报错 xff0c 特在此记录 本文包括tx2的大概刷机流程 xff0c 以及gparted的扩容方式 前期注意事项 1 如果能直接用ubuntu系统刷 xff0c 请一定不要用虚拟机
  • ROS 下使用codeblocks进行代码快速编辑

    提示 xff1a 文章写完后 xff0c 目录可以自动生成 xff0c 如何生成可参考右边的帮助文档 文章目录 前言一 安装codeblocks二 配置ROS头库路径三 设置codeblocks为默认打开软件效果展示总结 前言 学习ROS
  • Python查看图片模式及像素

    1 以彩色图像为例 xff1a 2 代码 xff1a span class token keyword import span sys span class token keyword from span PIL span class to
  • Python统计RAF-DB数据集中各类情感类别对应的图像数

    一 统计basic部分各类情感类别对应的图像数 1 需要说明的是 xff0c RAD DB数据集对情感的标记是从1开始而非从0开始 xff0c 具体如下 xff1a 1 xff1a Surprise 2 xff1a Fear 3 xff1a
  • Eclipse中查看JAVA源代码显示SOURCE NOT FOUND解决办法

    Eclipse中查看JAVA源码显示SOURCE NOT FOUND解决办法 写代码或者看别人代码的时候总想知道引用函数的内部构造 快捷键Ctrl 43 鼠标左键快捷查看源码 xff0c 不过小白在开始使用的时候一般未关联源码 xff0c
  • QGC地面站环境搭建问题

    1 ubuntu系统环境配置 参照如下博文进行配置 https blog csdn net qq 39751352 article details 125847392 2 ubuntu系统环境 xff0c qt5 12 6 43 qgc环境
  • ros msg文件数组定义与使用

    float32 ranges 注意这里的数组使用的是无长度限制的 xff0c 也就是方扩号内没有东西 在使用的时候 xff0c 不能够直接用数组赋值那样去做 xff0c 它实际上是一个向量 xff0c 往里面填充数据应使用c 43 43 中
  • Git(七)——删除历史版本,保留当前状态

    来自 git删除历史版本 xff0c 保留当前状态 LANGKYE 博客园 1 创建并切换到lastest branch分支 git checkout orphan latest branch 2 添加所有文件 git add A 3 提交
  • JVM 1:基础知识

    目录 一 JVM从编译到执行1 Java 程序的执行过程2 JVM JRE JDK 的关系 二 JVM的跨平台与语言无关性1 跨平台2 跨语言 xff08 语言无关性 xff09 三 JVM 整体知识模块 一 JVM从编译到执行 1 Jav
  • 软件在环SIL和硬件在环PIL实现过程记录

    标题Matlab Simulink 自动代码生成 基于模型设计学习教程 NO 1 软件在环SIL和硬件在环PIL实现过程记录 在完成模型算法的过程当中 xff0c 为了验证算法的准确性 xff0c 依此为模型验证 软件在环验证 xff0c
  • pandas读取excel,遍历数据

    1 迭代数据 以键值对的形式 获取 每行的数据 df 61 pd read excel io 61 excel path 默认读取sheet 61 0的 columns 61 df columns values tolist 获取excel
  • spring jpa 懒加载出现-could not initialize proxy - no Session

    1 could not initialize proxy no Session 一对多 xff0c 多对多关系映射中 xff0c 配置的懒加载 xff0c 会出现这个错误 配置文件配置配置即可 xff1a spring jpa open i
  • python 做的request模块封装工具类

    1 python 做的request模块封装工具类 记录下 xff0c 避免以后用到 import time from requests adapters import HTTPAdapter import json import requ