网络编程 Cookbook

客户端编写

Requests库

 

方法

request.方法名(post,get,head) args:url  kargs:header字典,单条请求头部

.urlopen自动选择请求类型

返回response对象

 

对象

request,实例req

参数与调用方法参数一致

方法request.urlopen(req)

 

response

可指定表示方式json(字典),text,content

 

服务器编写

socketserver库

继承自BaseRequestHandler(单线程)

实现handle方法

属性:

request:客户端套接字

client_adress客户端地址

 

重用端口

 

UDP服务器编写

socketserver

属性

request:元组:数据报+客户端socket

 

基于REST风格的简单接口

对程序实现远程控制或交互

一般的,编写响应HTTP请求的程序

长时间运行程序:REST风格API实现监控,诊断

大数据应用:构建查询、提取数据的系统

控制硬件设备

 

实现WSGI标准

import cgi

def wsgi_app(environ,start_response)

也可以是类实例(实现__call__方法)可调用类实例

 

environ字典

key:REQUEST_METHON,  PATH_INFO,

调用start_response,发起响应

start_response函数参数

字符串:结果状态

元组序列:HTTP头

 

返回字节串序列

或生成器(生成字节串)

 

本节的调度器只负责管理字典path_map

key      value

method:path  function

请求——提取 方法:路径

方法:路径  分发   处理函数

 

使用调度器

1.创建实例

2.注册处理函数到调度器

 

**查询变量:值 放入environ字典

 

WSGI

与服务器,框架 无关

 

 

XML-RPC

简单的远程过程调用服务

 

创建服务器实例

注册处理函数:register_function()方法

serve_forever方法加载

 

只能处理特定类型的数据:字符串,数字,列表,字典

会将所有数据序列化为XML格式

 

 

在不同的解释器间通信

运行多个解释器实例(可能在多个机器上)

通过消息,在不同解释器间 交换数据

 

multiprocessing.connection

 

消息完整无损,

对象通过pickle序列化

 

需要对连接实现更多的底层控制:超时,非阻塞IO

使用其他库,或socket实现

 

实现远程过程调用

在socket、multiprocessing.connection这样的消息传递层之上,实现简单的远程过程调用RPC

RPChandler

RPCProxy

 

posted on 2018-06-19 10:31  秦梦超  阅读(112)  评论(0编辑  收藏  举报

导航