python后端工程-sss使用的技术框架概述

1. requirement.txt 

http://fpub.server.com/pip-install/cmlb/cmlb-0.1.0.tar.gz
http://fpub.server.com/pip-install/monitor/monitor-0.1.0.tar.gz
http://fpub.server.com/pip-install/uls_log/uls_log-0.2.1.tar.gz
http://fpub.server.com/pip-install/srpc_pb2/srpc_pb2-0.6.3.tar.gz
http://fpub.server.com/pip-install/pyrpc/pyrpc-0.6.3.tar.gz
http://fpub.server.com/pip-install/web_proxy/web_proxy-0.0.5.tar.gz
http://fpub.server.com/pip-install/ftrace/ftrace-0.4.1.tar.gz
http://fpub.server.com/pip-install/srpc_client/srpc_client-0.1.149.tar.gz
http://fpub.server.com/pip-install/inotifier/inotifier-0.1.12.tar.gz
attrs==19.3.0
certifi==2019.11.28
chardet==3.0.4
cos-python-sdk-v5==1.7.8
dicttoxml==1.7.4
gevent==1.2.2
greenlet==1.1.2
idna==2.9
Jinja2==2.11.1
MarkupSafe==1.1.1
pdfkit==0.6.1
protobuf==3.14.0
PyMySQL==1.0.2
PyPDF2==1.26.0
PyYAML==3.13
requests==2.25.1
setproctitle==1.1.10
six==1.14.0
SQLAlchemy==1.4.35
urllib3==1.25.8
retrying==1.3.3
pycryptodomex==3.10.1
pika==1.1.0
boto3==1.19.1
botocore==1.22.1
pytest-subtests==0.5.0
pytest-mock==3.6.1
stackprinter==0.2.5
pdf-diff==0.9.1
pyminizip==0.2.6
 

 2. 简介清单

 

3. local化框架

http://fpub.server.com/pip-install/cmlb/cmlb-0.1.0.tar.gz     
路由功能
http://fpub.server.com/pip-install/monitor/monitor-0.1.0.tar.gz   
监控
http://fpub.server.com/pip-install/uls_log/uls_log-0.2.1.tar.gz   
日志 
http://fpub.server.com/pip-install/srpc_pb2/srpc_pb2-0.6.3.tar.gz
RPC框架
http://fpub.server.com/pip-install/pyrpc/pyrpc-0.6.3.tar.gz
RPC框架
http://fpub.server.com/pip-install/web_proxy/web_proxy-0.0.5.tar.gz
代理 ??
http://fpub.server.com/pip-install/ftrace/ftrace-0.4.1.tar.gz
埋点
http://fpub.server.com/pip-install/srpc_client/srpc_client-0.1.149.tar.gz
 RPC框架客户端
http://fpub.server.com/pip-install/inotifier/inotifier-0.1.12.tar.gz
通知 

4. 第三方框架

Python 是一种广泛使用的高级编程语言,它具有简洁、优雅、易读的语法,以及丰富的标准库和第三方库。Python 可以用于开发各种类型的应用程序,如 Web 应用、数据分析、机器学习、桌面应用等。在本文中,我们将介绍一个 Python 后端项目使用到的一些技术框架,包括数据交换、网络通信、数据库操作、模板引擎、文件处理、测试工具等。

4.1  数据交换

数据交换是指在不同系统或组件之间传递和处理数据的过程,通常涉及到数据的序列化和反序列化。序列化是指将数据转换为一种可传输或可存储的格式,反序列化是指将序列化后的数据恢复为原始的数据结构。常见的数据交换格式有 JSON、XML、YAML 等。本项目使用了以下几个库来实现数据交换:

  • protobuf:protobuf 是 Google 的数据交换格式,可以在不同语言和平台之间高效地序列化和反序列化结构化数据。protobuf 使用 .proto 文件来定义数据结构和服务接口,然后通过编译器生成对应语言的代码。protobuf 支持多种基本类型和复合类型,以及可选字段、重复字段、枚举类型等特性。protobuf 的优点是速度快、体积小、兼容性好,适合用于网络通信或持久化存储。
  • dicttoxml:dicttoxml 是一个将 Python 字典或其他原生数据类型转换为有效 XML 字符串的库,支持多种数据类型和嵌套结构。XML(可扩展标记语言)是一种标记语言,用于描述和存储结构化数据。XML 的优点是可读性好、通用性强,适合用于配置文件或文档处理。
  • PyYAML:PyYAML 是一个用于解析和生成 YAML(一种人类可读的数据序列化格式)文档的库。YAML 是一种类似于 JSON 的数据格式,但更加简洁和优雅。YAML 的优点是易于编写和阅读,适合用于配置文件或元数据描述。

4.2  网络通信

网络通信是指在不同系统或组件之间通过网络协议进行信息交换的过程,通常涉及到请求和响应的发送和接收,以及连接管理、错误处理、安全验证等功能。常见的网络协议有 HTTP、HTTPS、AMQP 等。本项目使用了以下几个库来实现网络通信:

  • requests:requests 是一个简洁且优雅的 HTTP 库,支持发送各种请求(如 GET, POST, PUT, DELETE 等),处理响应(如状态码、头部、内容等),设置超时、添加头部、上传文件、处理 Cookies、使用代理等功能。requests 还支持 SSL 证书验证,可以使用 certifi 库提供的 Mozilla 的根证书集合来验证 SSL 证书的信任性和身份。
  • gevent:gevent 是一个基于协程的 Python 网络库,使用 greenlet 提供了一个高层同步 API 来封装 libev 或 libuv 事件循环,支持异步 I/O、SSL、DNS 查询、子进程等功能。gevent 可以实现高并发和高性能的网络应用,通过 monkey patching 可以让大多数标准库和第三方库变为非阻塞式。
  • pika:pika 是一个纯 Python 实现的 AMQP(高级消息队列协议)客户端库,支持 RabbitMQ 等消息中间件。AMQP 是一种应用层协议,用于实现消息的发布、路由、传输和确认。pika 提供了多种连接适配器,如 BlockingConnection, SelectConnection, AsyncioConnection 等,以及多种通道方法,如 exchange_declare, queue_declare, basic_publish, basic_consume 等。

4.3 数据库操作

数据库操作是指在应用程序和数据库之间进行数据的增删改查的过程,通常涉及到数据库的连接、事务、语句、结果集等概念。常见的数据库有关系型数据库(如 MySQL, PostgreSQL, Oracle 等)和非关系型数据库(如 MongoDB, Redis, Cassandra 等)。本项目使用了以下几个库来实现数据库操作:

  • SQLAlchemy:SQLAlchemy 是一个著名的 ORM(对象关系映射)框架,支持多种数据库后端,提供了高层的对象模型和低层的 SQL 表达式语言。SQLAlchemy 可以将 Python 对象映射到数据库表中,实现对象和数据的同步,以及对数据的查询、更新、删除等操作。SQLAlchemy 还支持事务、连接池、事件监听等功能。
  • PyMySQL:PyMySQL 是一个纯 Python 实现的 MySQL 客户端库,支持 Python DB API 2.0 规范。PyMySQL 可以直接与 MySQL 服务器进行通信,执行 SQL 语句,获取结果集等。PyMySQL 还支持 SSL 加密、压缩协议、预处理语句等功能。
  • boto3:boto3 是 AWS(亚马逊网络服务)的 Python SDK,可以方便地在 Python 程序中调用 AWS 的各种服务,如 S3(对象存储)、DynamoDB(非关系型数据库)、RDS(关系型数据库服务)等。boto3 提供了高层的资源对象和低层的客户端对象,以及多种集合和分页器等工具。

4.4  模板引擎

模板引擎是指将数据和模板结合起来生成目标文档的工具,通常用于生成 HTML、XML、PDF 等格式的文档。模板引擎通常提供了一种特定的模板语法,用于定义变量、控制流、过滤器等元素。本项目使用了以下几个库来实现模板引擎:

  • Jinja2:Jinja2 是一个现代化且设计友好的模板引擎,参考了 Django 的模板语法,支持模板继承、宏、自动 HTML 转义、沙箱执行等功能。Jinja2 还提供了多种加载器和扩展,以及强大的表达式求值能力。
  • pdfkit:pdfkit 是一个将 HTML 转换为 PDF 的库,基于 wkhtmltopdf 工具。pdfkit 可以将 HTML 字符串或文件转换为 PDF 文件或字节流,并支持设置页面大小、方向、边距、编码等参数。
  • MarkupSafe:MarkupSafe 是一个实现文本对象的库,可以对字符进行转义,使其在 HTML 和 XML 中安全使用,防止 XSS 攻击。MarkupSafe 还提供了一种 Markup 类型,用于表示已经转义过的文本。

4.5  文件处理

文件处理是指对文件进行读写、压缩、加密等操作的过程,通常涉及到文件的路径、格式、内容等属性。常见的文件格式有 TXT, CSV, JSON, XML, PDF, ZIP 等。本项目使用了以下几个库来实现文件处理:

  • PyPDF2:PyPDF2 是一个用于操作 PDF 文件的库,支持分割、合并、裁剪、加密等功能。PyPDF2 可以读取 PDF 文件中的元数据、页面、内容等信息,也可以修改或添加这些信息,以及创建新的 PDF 文件。
  • cos-python-sdk-v5:cos-python-sdk-v5 是腾讯云 COS(对象存储)的 Python SDK,可以方便地在 Python 程序中调用 COS 的 API 接口。COS 是一种分布式存储服务,可以存储和访问海量的数据。cos-python-sdk-v5 提供了多种操作方法,如上传、下载、删除、复制、查询等。
  • pyminizip:pyminizip 是一个用于压缩和解压缩 ZIP 文件的库,支持密码保护和加密。ZIP 是一种常见的文件压缩格式,可以将多个文件或文件夹打包成一个文件,减少存储空间和传输时间。pyminizip 可以使用不同的压缩级别和加密算法,如 zlib, bzip2, AES 等。

4.6  测试工具

测试工具是指用于检验和验证代码的正确性和质量的工具,通常涉及到单元测试、集成测试、功能测试、性能测试等类型。测试工具通常提供了一种特定的测试框架,用于定义测试用例、执行测试、生成报告等功能。本项目使用了以下几个库来实现测试工具:

  • pytest:pytest 是一个流行的 Python 测试框架,支持自动发现和运行测试用例,以及多种插件和扩展。pytest 使用 assert 语句来编写测试用例,支持参数化、分组、跳过等功能。pytest 还提供了多种输出格式和选项,如 verbose, quiet, color, capture 等。
  • pytest-subtests:pytest-subtests 是一个 pytest 的插件,用于实现子测试的功能,可以在一个测试函数中运行多个独立的测试用例,并显示每个子测试的结果。子测试可以避免因为一个断言失败而导致整个测试函数终止的问题,提高测试的灵活性和可读性。
  • pytest-mock:pytest-mock 是一个 pytest 的插件,用于集成 mock 库,可以方便地创建和使用模拟对象。模拟对象是一种用于替代真实对象的虚拟对象,可以模拟对象的行为和属性,以及记录对象的调用情况。模拟对象可以用于隔离依赖、模拟异常、验证结果等目的。
  • stackprinter:stackprinter 是一个用于美化和增强异常堆栈跟踪的库,可以显示更多的上下文信息和颜色高亮。stackprinter 可以帮助开发者快速定位和解决错误,提高调试效率。

5.  总结

本文介绍了一个 Python 后端项目使用到的一些技术框架,包括数据交换、网络通信、数据库操作、模板引擎、文件处理、测试工具等。这些技术框架都是 Python 生态中优秀且实用的库,可以帮助开发者提高开发效率和代码质量。当然,这些技术框架并不是唯一或最佳的选择,开发者可以根据自己的需求和喜好选择合适的技术框架。希望本文能给你一些启发和参考。

 
 
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章