前言
看完《HTTP 权威指南》前三章:HTTP 概述、URL 与资源、HTTP 报文,大致对现在 Web 服务中 HTTP 协议有个初步的认识,一般 http 的客户端都是浏览器,现写个小工具,实现 http 客户端的功能,发送报文,并接受响应报文。
Python
requests 是用 python 写的 HTTP 库,基于 urllib,但是比 urllib 更加方便,测试 HTTP 客户端发送请求报文,可以选用 requests 库,社区中 requests 比 urllib 更加 pythoner。
安装 requests:
pip3 install requests
安装完成后就可以导入了,并调用 HTTP 方法:
import requests #GET、POST、PUT、DELETE、HEAD、OPTIONS 方法 r = requests.get("http://www.baidu.com") r = requests.post("http://www.baidu.com") r = requests.put("http://www.baidu.com") r = requests.delete("http://www.baidu.com") r = requests.head("http://www.baidu.com") r = requests.options("http://www.baidu.com")
requests 在发送请求报文的时候,还可以自定义 header:
#header header = {'content-type': 'application/json', 'User-Agent': 'Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:22.0) Gecko/20100101 Firefox/22.0' } r = requests.post("https://api.github.com/some/endpoint', headers=header
当然还有自定义参数:
requests.get("http://www.baidu.com", params={'wd':'python}) requests.post("http://www.baidu.com", data={'comment':'POST test'})
使用 requests 方法之后,会返回一个 response 对象,存储了来自服务器的响应内容:
r.encoding #响应报文的字符集 r.status_code #响应状态码 r.raw #返回原始响应体,也就是 urllib 的 response 对象,使用 r.raw.read() 读取 r.text #字符串方式的响应体,会自动根据响应头部的字符编码进行解码 r.headers #以字典对象存储服务器响应头,但是这个字典比较特殊,字典键不区分大小写 r.json #requests 中内置的 JSON 解码器 r.ralse_for_status() #失败请求抛出异常 pip3 install requests
有关 requests 的详细可参考官方文档:http://docs.python-requests.org/zh_CN/latest/user/quickstart.html
进程监控平台:
期间用过阿里云自带的进程监控,在服务器执行 ps -ef | grep process_name 的时候,监控也会把这条bash 进程当做是正在监控的进程而报警,之前也用过 bash scripts 每次执行都会过滤配置文件里面配置的进程名称,然后在终端显示出来,没法起到实时监测的作用,想练练手写个进程监控平台;
后台 python:获取进程状态信息、响应 HTTP 请求并发送进程状态信息报文至前台
前台 h5:每隔一段时间 GET 请求获取进程状态,然后展示。
数据库 mysql:存放进程状态信息