python包构建工具和二进制打包工具
站内链接:
mro 多重继承
Python 魔术发放
Python 日志库
python 作用域和命名空间
python 单例模式
python 模块导入和模块术语
python 多线程
python 协程
python 包管理
pip 包管理
包构建工具元数据一个 python 软件包在安装之后元数据文件夹包含两部分: {package}-{version} .dist-info, 业务逻辑文件, 其中:
发行信息(dist info): 描述了安装软件包的安装程序, 软件包的许可证, 安装过程创建的文件, 软件包暴露的入口等
业务逻辑: 开发者本身编写的业务代码目录
比如, toml 包在安装之前的 source tree(源码树)结构如下:
12345678910111213141516toml git:(master) tree -NC -L 1.├── CONTRIBUTING├── LICENSE├── MANIFEST.in├── README.rst├── RELEASE.rst├── examples├── setup. ...
API:架构风格介绍
相关文章:
API 架构介绍(1):架构风格简要知识点
API 架构介绍(2):API 类型发展历史知识点
API 架构介绍(3):RPC 远程调用
API 架构介绍(4):REST 介绍
API 架构介绍(5):websocket 介绍
API 架构介绍(6):graph django 介绍
架构风格和设计模式设计模式设计模式在 WIKI 上的定义:
The design patterns in this book are descriptions of communicating objects and classes that are customized to solve a general design problem in a particular context.
设计模式描述了一组类和对象之间的关系, 用以解决特定上下文内的某个常见的设计问题, 例如:
观察者模式: 实现出版和订阅功能, 其定义了对象之间一对多的依赖关系, 一旦出版者发生改变, 所有依赖对象都会收到通知
装饰者模式: 动态的将功能附加到对象上, 相比继承更加弹性, 解决类数量爆炸, 基 ...
API:API发展历史
网站内部相关文章:
API 架构:RPC 远程调用
API 架构:REST 介绍
API 架构:graph django 介绍
websocket 介绍
API 类型发展历史知识点
架构风格简要知识点
http 发展第一个网站1990 年 12 月 20 日, 欧洲核子研究组织(CREN)的科学家 Tim Berners-Lee 在一台 NeXT 电脑上启动了世界上的第一个只有自己能够访问的网站, CREN 在 2013 年”复刻”该网站, 具体可以见:http://info.cern.ch/.
http 历史
http 0.9
HTTP(Hyper Text Transfer Protocol) 协议的最早版本是 0.9, 发布于 1991 年(HTTP 0.9 https://www.w3.org/Protocols/HTTP/AsImplemented.html), 其仅仅支持 GET 请求, 无request headers, 用于展示静态文本内容, 此时的 web 仅仅是为了共享文档信息, 所以该协议恰好符合该需求, 例如获取一个网页:
1GET /index.html ...
API:restful介绍
网站内部相关文章:
RPC 远程调用
REST 介绍
graph django 介绍
websocket 介绍
API 类型发展历史知识点
软件架构风格
RESTful 是什么定义和术语首先, 让我们带着疑问进行后续阅读:
什么是 REST(表述性状态转移)风格?
如何使用 REST 来指导现代 WEB 架构的设计和开发?
REST 解决了哪类问题?
REST 相比传统 WEB API, 其有哪些优点?
另外, 在了解 RESTful 之前, 最好提前先看一遍Roy Thomas Fielding博士的论文架构风格与基于网络的软件架构设计, 其非常全面清晰的讲解了:
软件架构的基本组成以及评估一个软件风格架构属性
基于网络的架构的分类及适用场景
基于万维网的需求, 由基于网络的架构风格逐渐搭建的而出的 REST 风格以及优缺点
Roy Fielding博士是参与HTTP1.0和HTTP1.1协议的设计工作人员之一, HTTP1.1第一份草稿于是在 1996 年 1 月发布的, 经过了三年多时间的修订, 于 1999 年 6 月成为了 IETF 的正式规范. REST 论文则 ...
API:rpc介绍
网站内部相关文章:
RPC 远程调用
REST 介绍
graph django 介绍
websocket 介绍
API 类型发展历史知识点
软件架构风格
What is rpc?使用场景RPC 最早起源于 60 年代, 此时计算机非常昂贵和庞大, 此时服务器的带宽, 计算能力, 并发性能等原因使得服务一般使用分布式系统, 分布式系统本质上就多进程协作, 进程之间需要进行相互通信, 例如将计算外包给分布式系统中的某一个服务器, 此时远程调用的概念被提出来.
RFC674: 提出远程调用, 试图定义一种通用方法, 用于解决分布式系统中多个计算节点的通信问题
RFC684: RFC674 的补充说明, 规定了过程调用为原语操作, 远程调用的故障问题, 同步等待消息返回等问题
RFC707: 讨论 telnet/ftp 等远程调用服务的资源共享问题, 过程调用的滥用问题, 提出建立一个通用的模型来进行远程调用
从此, 一个标准的 RCP 远程调用流程如下:
虽然 RPC 的提出时间远远早于 SOAP, Restful, 但是其在现在仍然使用较为广泛, 对比 RPC 和 Re ...
ab命令
性能术语
性能测试
性能测试是利用流程来降低应用程序,升级程序,补丁程序部署风险的某一种手段, 通过模拟产生真实业务的压力对被测试系统进行压力测试, 验证被测试系统在不同压力下的具体情况, 从而找出潜在的瓶颈.
那么, 性能测试的方法都有哪些? 性能测试相关的专业术语都有哪些? 平常所见到的 TPS 等与性能测试的关系为何?
测试方法
这里简单的描述一下常见的性能测试方法, 其他不做过多介绍:
负载测试(Load Testing): Large amount of users, 从小的负荷开始, 逐渐增加负载, 观察不同负载下应用程序的响应时间,消耗资源等等, 它是测试系统在不同工作负荷(负载)下的性能指标, 从而了解服务器的工作能力.
压力测试(Stress Testing): Too many users, too much data, too little time and too little root, 在负荷条件(系统资源极少)情况下系统长时间运行的稳定性, 利用脚本故意吃掉服务器部分 CPU/内存/带宽等方式, 亦或者大业务量情况下导致的服务器 ...
Guniorn介绍和使用
站内链接:
supervisor 使用
gunicorn 使用
WSGI 和 SGI 教程
Introduction介绍gunicode(独角兽)是一个高效的 python WSGI Server,该项目是由 Ruby 的 Unicorn 项目移植而来, 继续了大部分的设计思想并扩展和巩固了其中一些概念. 一般使用 unicorn 来运行 wsgi application/wsgi framework, 类似 java 中的tomcat, 在大部分的服务器架构中, 其通常位于反向代理/负载均衡(nginx)和 web 应用之间(flask/django).
gunicorn 实现了一个 UNIX 的预分发web 服务器端, 其中的一些专业术语类似 nginx:
一个 master,多个 worker
master 管理配置和热升级
worker 接收链接和处理链接
其中 worker 可选实现如下:
sync worker # 每一个进程当且处理一个请求
thread worker # 通过在一个进程里面开启多个线程来处理多请求, 对应 thre ...
websocket知识点
网站内部相关文章:
RPC 远程调用
REST 介绍
graph django 介绍
websocket 介绍
API 类型发展历史知识点
websockets解决问题围绕 HTTP 的请求和响应在低延时的交互场景中使用如下的技术:
短轮询: Client 请求数据, Server 立刻返回数据并断开连接, 不管数据是否发生变化
长轮询: Client 请求数据, Server 不会立刻断开连接, 保活连接一段时间(例如 1min), 直到超时断开, 之后重复上述流程
但是基于 HTTP 的长轮询和短轮询都有他们各自的缺点以及无法在低延时场景解决需求的问题:
短轮询: 大量的短轮询造成服务器需要并发处理大量的请求, 对服务器造成极大的并发压力, 极大的占用网络带宽
长轮询: 连接的挂起导致资源的极大浪费, 同时可能导致 TCP 连接(长连接)不能复用, 需要服务器横向扩展并发能力
共同特点: 短轮询和长轮询仍然是基于 HTTP 协议, Client 和 Server 之间的通信有着非常大的开销, 不适用于低延时场景
websockets 协议websockets 在维基上的 ...
ssh远程执行命令及bash工作模式
本网站相关文章:
远程自动化工具
ssh 基本安装和配置
ssh 隧道转发功能以及应用
ssh 代理转发介绍及应用场景
ssh 代理中使用 https 以及二级代理的介绍
ssh 数字证书生成以及 https 原理介绍
ftp 安装,原理,配置
ssh 远程执行命令和 bash 工作模式
1. 远程执行自动化库在远程自动化工具章节中我们介绍过自动化交互工具:
Expect
Python 封装的 pexpect
Python 封装的 SSH2 远程安全连接库 Paramiko
对 Paramiko 封装的 fabric
这些工具能够让我们非常高效的进行运维自动化工作, 比如 fabric, 本人曾经参加过爬虫开发工作并单人水平较次的负责人, 我的爬虫经验是真的菜, 哈哈. 那时候的爬虫服务器架构简单说明是这样的:
因为历史原因, 公司基础服务部对 python 相关运行生态没有非常好的支持, 比如自动化部署, 自动化发布, 日志收集等等, 所以很多东西都只能爬虫部门自己来完成, 而且爬虫这边的项目还需要考虑到香港服务器和国内服务器两个地方部署的问题, 最棘手的一个问题是 GFW ...
命名空间和作用域
站内链接:
mro 多重继承
Python 魔术发放
Python 日志库
python 作用域和命名空间
python 单例模式
python 模块导入
python 多线程
python 协程
词法作用域作用域分为两类: 词法作用域(静态), 动态作用域(lisp, bash), 大部分的开发语言都是静态作用域, 即作用域在代码编写定义或者预编译阶段就已经确定了,下面举例来说明两种作用域的执行区别:
12345678910111213@show_function(desc='作用域-静态作用域')def scope_static_verify(): name = 'global' def fun1(): print(f'被调用函数fun1, 此时name值:{name}') def fun2(): name = 'func2' fun1() fun2()scope_static_verify() # 输出为glo ...