文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

Python SDK怎么实现私服上传下载

2023-06-21 22:20

关注

本篇内容介绍了“Python SDK怎么实现私服上传下载”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!

编写Python SDK代码

工程目录结构

├──── easyhttp                   // SDK目录    │   ├── __init__.py           │   ├── https.py          // http工具类    ├── tests                      // 单元测试目录    │   ├── __init__.py           │   ├── test_https.py      // http单元测试    ├── README.md                 ├── requirements.txt        //依赖包    └── setup.py              //setuptools安装

requirements.txt

requests==2.24.0

https.py

# -*- coding:utf8 -*-"""@Project: easyhttp@File: https.py@Version: v1.0.0@Time: 2020/6/24 17:22@Author: guodong.li@Description: http"""from typing import Optionalimport requestsimport loggingfrom requests import Responselogging.basicConfig(format='%(asctime)s - %(pathname)s[line:%(lineno)d] - %(levelname)s: %(message)s',                    level=logging.DEBUG)class HttpUtils:    headers = {        "Content-Type": "application/json"    }    # http://10.193.199.44:5610/api/v1/manual/sleep?time=0    @staticmethod    def base_get(base_path: str='', detail_path: str='', params: Optional[dict]=None)-> Response:        """            GET请求        :param base_path: 域名        :param detail_path: 接口详情        :param params: 参数        :return:        """        logging.info("请求方式:GET, 请求url:  %s  , 请求参数: %s " % (base_path + detail_path, params))        response = requests.get(base_path + detail_path, params=params)        logging.info("请求方式:GET, 请求url:  %s  , 请求参数: %s , 结果:%s" % (base_path + detail_path, params, response))        return response    @classmethod    def base_post(cls, base_path: str='', detail_path: str='', params: Optional[dict]=None)-> Response:        """            POST请求        :param cls:        :param base_path: 域名        :param detail_path: 接口详情        :param params: 参数        :return:        """        logging.info("请求方式:POST, 请求url:  %s  ,请求参数: %s " % (base_path + detail_path, params))        response = requests.post(base_path + detail_path, data=params, headers=cls.headers)        logging.info("请求方式:POST, 请求url:  %s  , 请求参数: %s , 结果:%s" % (base_path + detail_path, params, response))        return response

test_https.py

import requestsimport loggingfrom easyhttp.https import HttpUtilslogging.basicConfig(format='%(asctime)s - %(pathname)s[line:%(lineno)d] - %(levelname)s: %(message)s',                    level=logging.DEBUG)r = requests.get("http://xxx.xxx.xxx.xxx:5610/api/v1/manual/sleep?time=0")logging.info(r)  # <Response [200]>logging.info(type(r))  # <class 'requests.models.Response'>logging.info(r.status_code)  # 200

代码写完了之后,打包并上传到私服。

打包并上传私服

安装twine包

pip install twine

编写构建工具setup.py进行打包

# -*- coding:utf8 -*-"""@author: guodong.li@email: liguodongiot@163.com@time: 2019/7/31 14:04@file: setup.py@desc: """# 引入构建包信息的模块from setuptools import setup, find_packagestry:  # for pip >= 10    from pip._internal.req import parse_requirements    from pip._internal.network.session import PipSessionexcept ImportError:  # for pip <= 9.0.3    from pip.req import parse_requirements    from pip.download import PipSession# parse_requirements() returns generator of pip.req.InstallRequirement objectsinstall_reqs = parse_requirements('requirements.txt', session=PipSession())# reqs is a list of requirement# e.g. ['django==1.5.1', 'mezzanine==1.4.6']reqs = [str(ir.req) for ir in install_reqs]# 定义发布的包文件的信息setup(    name="easyhttp",  # 发布的包的名称    version="1.0.0",  # 发布包的版本序号    description="easy use http",  # 发布包的描述信息    author="guodong.li",  # 发布包的作者信息    author_email="liguodongiot@163.com",  # 作者的联系邮箱    packages=["easyhttp"],    # include_package_data=True,  # include everything in source control    # ...but exclude README.txt from all packages    exclude_package_data={'': ['README.md'],                          'tests': ['*.py']},    install_requires=reqs,)

setup.py各参数简单介绍如下:

新增.pypirc文件

touch ~/.pypirc

在.pypirc文件添加如下配置

[distutils]index-servers =    pypi    nexus [pypi]repository:https://pypi.python.org/pypiusername:your_usernamepassword:your_password  [nexus]repository=http://192.168.12.196:8081/repository/mypypi-hosted/username=your_usernamepassword=your_password

打包并上传至私服仓库nexus

python setup.py sdist bdist_wheel upload -r nexus

或者打包命令和上传命令分开操作

打包命令

python setup.py sdist bdist_wheel

上传命令

twine upload -r nexus dist/* # -r 可以选择仓库地址

创建虚拟环境,并下载私服包进行验证

创建虚拟环境

virtualenv -p /usr/bin/python venv

激活虚拟环境

source venv/bin/activate

下载包

pip  install easyhttp==1.0.0 -i http://your_username:your_password@192.168.12.196:8081/repository/mypypi-hosted/simple/  --trusted-host 192.168.12.196

进入python shell环境

python

代码验证

>>> from pai.utils.https import HttpUtils>>> import logging>>> logging.basicConfig(format='%(asctime)s - %(pathname)s[line:%(lineno)d] - %(levelname)s: %(message)s',level=logging.INFO)>>> r = requests.get("http://10.xxx.xxx.xxx:5610/api/v1/manual/sleep?time=0")2020-07-02 11:31:50,903 - /root/python/20200702/venv/lib/python3.7/site-packages/urllib3/connectionpool.py[line:230] - DEBUG: Starting new HTTP connection (1): 10.xxx.xxx.xxx:56102020-07-02 11:31:51,065 - /root/python/20200702/venv/lib/python3.7/site-packages/urllib3/connectionpool.py[line:442] - DEBUG: http://10.xxx.xxx.xxx:5610 "GET /api/v1/manual/sleep?time=0 HTTP/1.1" 200 None>>> logging.info(r)  # <Response [200]>2020-07-02 11:32:15,420 - <stdin>[line:1] - INFO: <Response [200]>>>> >>> logging.info(type(r))  # <class 'requests.models.Response'>2020-07-02 11:32:27,371 - <stdin>[line:1] - INFO: <class 'requests.models.Response'>>>> logging.info(r.status_code)  # 2002020-07-02 11:32:39,069 - <stdin>[line:1] - INFO: 200

“Python SDK怎么实现私服上传下载”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注编程网网站,小编将为大家输出更多高质量的实用文章!

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     807人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     351人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     314人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     433人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     221人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯