http请求/响应解析器
项目描述
http-parser
http-parser是一个与Python 2.x (>=2.7)、Python 3和Pypy兼容的HTTP请求/响应解析器。如果可能的话,将使用基于Ryan Dahl的http-parser的C解析器。
http-parser采用MIT许可证。
项目网址: https://github.com/benoitc/http-parser/
要求
Python 2.7或更高版本。Pypy最新版本。
如果您需要重新构建C代码,则需要Cython(Pypy不需要)
安装
$ pip install http-parser
或从源安装
$ git clone git://github.com/benoitc/http-parser.git $ cd http-parser && python setup.py install
注意:如果在MacOSX上遇到错误,请尝试使用以下参数进行安装
$ env ARCHFLAGS=" -arch i386 -arch x86_64 " python setup.py install
使用
http-parser提供您在Python程序中可以访问的低级别解析器 parser.HttpParser,并提供 http.HttpStream,它提供对可读、顺序io.RawIOBase对象的更高级别访问。
为了帮助您在日常工作,http-parser在reader模块中提供了3种类型的读取器:IterReader用于读取可迭代对象,StringReader用于读取字符串和StringIO对象,SocketReader用于读取套接字或具有相同api的对象(需要recv_into)。当然,您可以使用任何io.RawIOBase对象。
HttpStream 示例
ex
#!/usr/bin/env python
import socket
from http_parser.http import HttpStream
from http_parser.reader import SocketReader
def main():
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
try:
s.connect(('gunicorn.org', 80))
s.send("GET / HTTP/1.1\r\nHost: gunicorn.org\r\n\r\n")
r = SocketReader(s)
p = HttpStream(r)
print p.headers()
print p.body_file().read()
finally:
s.close()
if __name__ == "__main__":
main()
HttpParser 示例
#!/usr/bin/env python
import socket
# try to import C parser then fallback in pure python parser.
try:
from http_parser.parser import HttpParser
except ImportError:
from http_parser.pyparser import HttpParser
def main():
p = HttpParser()
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
body = []
try:
s.connect(('gunicorn.org', 80))
s.send("GET / HTTP/1.1\r\nHost: gunicorn.org\r\n\r\n")
while True:
data = s.recv(1024)
if not data:
break
recved = len(data)
nparsed = p.execute(data, recved)
assert nparsed == recved
if p.is_headers_complete():
print p.get_headers()
if p.is_partial_body():
body.append(p.recv_body())
if p.is_message_complete():
break
print "".join(body)
finally:
s.close()
if __name__ == "__main__":
main()
更多文档可以在代码中找到(或使用文档生成器)。
版权
2011-2020 (c) Benoît Chesneau <benoitc@e-engura.org>
项目详情
关闭
http-parser-0.9.0.tar.gz 的哈希值
| 算法 | 哈希摘要 | |
|---|---|---|
| SHA256 | 441d3a57c6227230f98aa97539da006fda0f8f4880bc4c5cd895ff2138a52621 |
|
| MD5 | f8068c8a4fd55938a6599934fe3687dd |
|
| BLAKE2b-256 | 04b2c98d0a2b759fcf91ae0a3e7691e840e4c861dac2c7f5a4e36220129d0cc8 |
关闭
http-parser-0.9.0-py3.7-macosx-10.15-x86_64.egg 的哈希值
| 算法 | 哈希摘要 | |
|---|---|---|
| SHA256 | 779f6666c32e831f755bf8c410df8a0d5a498b374506bfe0e74d5b3def746de3 |
|
| MD5 | 0449b95ddc987d66b8d1948c84481cf8 |
|
| BLAKE2b-256 | 59b74ce92a69e3f77ffdcaf385780506f8078f6da92f04080c22cdfe9324245a |
关闭
http_parser-0.9.0-cp37-cp37m-macosx_10_15_x86_64.whl 的哈希值
| 算法 | 哈希摘要 | |
|---|---|---|
| SHA256 | fc025894367cff34fcfc7386980b146b9498e9324cf3dc8992b39609e6158401 |
|
| MD5 | 1572e9c9c2a56c727f81b499c91225f4 |
|
| BLAKE2b-256 | 686127b858a69bed58acd271717095d562178ef733d43c60cec6e3a7ca804028 |