HTTPX|Python 3的下一代HTTP客户端

简介

HTTPX 是最近 GitHub看的到一个比较火的一个项目,根据官网描述,总结有如下特点:

  • 和使用 requests 一样方便,requests 有的它都有
  • 加入 HTTP/1.1 和 HTTP/2 的支持。
  • 能够直接向 WSGI 应用程序或 ASGI 应用程序发出请求。
  • 到处都有严格的超时设置
  • 全类型注释
  • 100% 的测试覆盖率

    FastAPI中的简单应用

文后的参考中给出了HTTPX基本使用举例,在此不赘述。我的结论至少有二:
(1)简化了传统的同步HTTP操作
(2)简化了异步HTTP操作(也是最大亮点吧)

现在来看一个在FastAPI开发中测试API的基本例子:

创建主模块程序main.py

代码如下:

HTTPX|Python 3的下一代HTTP客户端

编写测试文件test_main.py

代码如下:
HTTPX|Python 3的下一代HTTP客户端

【注意】如果我们想在测试中调用异步函数,我们的测试函数也必须是异步的!Pytest为此提供了一个整洁的库,称为Pytest-asyncio,它允许我们指定异步调用某些测试函数。安装命令如下:

HTTPX|Python 3的下一代HTTP客户端

安装了Pytest-asyncio后,pytest会自动判断并调用它。如果不安装这个pytest-asyncio库,那么上面代码中从httpx导入AsyncClient时将出现语法错误,提供没有这个类支持!!!

小结

httpx是一个正在成长中的年轻Python3库,但是从github用户关注度及Python应用需求现状来看,这个库非常有前景!无论在服务端开发方面,还是在爬虫开发方面。

参考

https://github.com/encode/httpx
https://www.python-httpx.org/advanced/
https://fastapi.tiangolo.com/advanced/async-tests/

扫描二维码关注公众号,回复: 12136290 查看本文章

猜你喜欢

转载自blog.51cto.com/zhuxianzhong/2583109