侧边栏壁纸
博主头像
落叶人生博主等级

走进秋风,寻找秋天的落叶

  • 累计撰写 130562 篇文章
  • 累计创建 28 个标签
  • 累计收到 9 条评论
标签搜索

目 录CONTENT

文章目录

写个小玩意儿一:http 客户端

2023-12-09 星期六 / 0 评论 / 0 点赞 / 102 阅读 / 3232 字

前言 看完《HTTP 权威指南》前三章:HTTP 概述、URL 与资源、HTTP 报文,大致对现在 Web 服务中 HTTP 协议有个初步的认识,一般 http 的客户端都是浏览器,现写个小工具,

前言

    看完《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:存放进程状态信息

 

广告 广告

评论区