# Easy HTTP Framework **Repository Path**: breaktime1903/easy-http-framework ## Basic Information - **Project Name**: Easy HTTP Framework - **Description**: No description available - **Primary Language**: Python - **License**: MIT - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 2 - **Forks**: 0 - **Created**: 2020-12-09 - **Last Updated**: 2021-01-14 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # Easy HTTP Framework ## 介绍 **奇特的WSGI框架** 基于python3编写而成,可用于作为blog的后端服务器使用 ## 软件架构 这次对程序做了比较大的修改,使用面向对象的方法调用服务器的接收端和发送端 所有的模块被合并至一个文件中 ### client_obj的调用方法 #### client_obj.get_request 获取经过完全解析的header,格式如下 ```python { 'method':'GET', # 请求方法 'path':'/', #请求的路径 'protocol':'HTTP/1.1', #请求所用的协议 'detail':{} #请求头部 } ``` #### client_obj.write_head 将header写入对象的缓冲区中(即暂不发送) ```python client_obj.write_head(200,{'Content-Type':'text/html'}) #前一项为状态码,后一项为请求报头 ``` #### client_obj.done 立即发送数据,不关闭socket ```python client_obj.done() ``` #### client_obj.shut 关闭socket(之后就没办法再次访问了) ```python client_obj.shut() ``` #### client_obj.clear_buffer 清空对象的缓冲区(可以以此重写header) ```python client_obj.clear_buffer() ``` #### client_obj.recv_raw 接受未处理的byte类型数据 ```python client_obj.recv_raw(buffer_size) #缓冲区大小 ``` #### client_obj.send_raw 发送未处理的byte类型数据 ```python client_obj.send_raw(raw_data) #发送的数据 ``` #### client_obj.acquire_lock 为线程安全而设计的,获取该线程的锁 ```python client_obj.acquire_lock() ``` #### client_obj.release_lock 释放该线程的锁 ```python client_obj.release_lock() ``` > 这就是基本的client_obj的操作了 ### base_server的调用方法 ```python base_server.base_http_server(addr,port,main_function,thread_num) #这我就不多说了,addr是监听地址,port是监听端口,main_function是WSGI函数,thread_num是监听的线程数量 ``` #### base_server.serve_forever 启动服务器并一直监听,此时程序不阻塞 ```python base_server.serve_forever(backlog) #backlog指监听的队列的数量 while True: pass #为什么加这么一句死循环呢,因为执行后程序不阻塞 ``` # 这就是这个玩意的基本用法了,有什么建议可以发个issue,如果有创意也可以发一个,现在我已经把example文件夹清空了,看看什么时候弄一个完善一点的模块