标签归档:trio

Httpx-Python的下一代HTTP客户端。🦋

HTTPX是Python3的一个功能齐全的HTTP客户端,它提供同步和异步API,并同时支持HTTP/1.1和HTTP/2

注意事项HTTPX应该在测试版中考虑。我们相信我们现在已经使公共API达到了一个稳定点,但是强烈建议将您的依赖项绑定到0.18.*发布,这样您就可以正确地查看API changes between package updates1.0版本预计将在2021年的某个时候发布


我们开始吧

>>> import httpx
>>> r = httpx.get('https://www.example.org/')
>>> r
<Response [200 OK]>
>>> r.status_code
200
>>> r.headers['content-type']
'text/html; charset=UTF-8'
>>> r.text
'<!doctype html>\n<html>\n<head>\n<title>Example Domain</title>...'

或者,使用异步API

使用IPython或Python 3.8+和python -m asyncio以交互方式尝试此代码

>>> import httpx
>>> async with httpx.AsyncClient() as client:
...     r = await client.get('https://www.example.org/')
...
>>> r
<Response [200 OK]>

功能

HTTPX构建在requests,并为您提供:

加上的所有标准功能requests

  • 国际域名和URL
  • 保活和连接池
  • 具有Cookie持久性的会话
  • 浏览器样式的SSL验证
  • 基本/摘要身份验证
  • 精美的密钥/价值Cookie
  • 自动解压
  • 自动内容解码
  • Unicode响应正文
  • 多部分文件上载
  • HTTP(S)代理支持
  • 连接超时
  • 流式下载
  • netrc支持
  • 分块请求

安装

使用pip安装:

$ pip install httpx

或者,要包括可选的HTTP/2支持,请使用:

$ pip install httpx[http2]

HTTPX需要Python 3.6+

文档

有关项目文档,请访问https://www.python-httpx.org/

要浏览所有基础知识,请访问QuickStart

有关更高级的主题,请参阅Advanced Usage部分中,async support节,或HTTP/2部分

这个Developer Interface提供全面的API参考

要了解有关与HTTPX集成的工具的信息,请参阅Third Party Packages

贡献力量

如果您想使用HTTPX做出贡献,请查看Contributing Guide学习如何开始

依赖项

HTTPX项目依赖于这些优秀的库:

  • httpcore-的底层传输实现httpx
    • h11-HTTP/1.1支持
    • h2-HTTP/2支持。(可选)
  • certifi-SSL证书
  • rfc3986-URL解析和规范化
    • idna-支持国际化域名
  • sniffio-异步库自动检测
  • async_generator-后端支持contextlib.asynccontextmanager(仅Python 3.6需要)
  • brotlicffi-解码“brotli”压缩响应。(可选)

巨额信贷应归因于requests对于此工作中的大部分工作所遵循的API布局,以及urllib3有关较低级别的网络细节的大量设计灵感,请参阅

-⭐️-

HTTPX是BSD licensed密码。在英国布赖顿设计和建造

Trio-Trio-用于异步并发和I/O的友好Python库

Trio项目的目标是生产一种生产质量高、permissively licensed,异步/等待-Python的本机I/O库。与所有异步库一样,它的主要目的是帮助您编写执行以下操作的程序同时做多件事使用并行I/O一个想要并行获取大量页面的网络蜘蛛,一个需要同时处理大量下载和websocket连接的网络服务器,一个监控多个子进程的进程管理程序。诸如此类的事情。与其他图书馆相比,Trio试图通过痴迷于可用性正确性并发性是复杂的;我们试图使其简单易懂去拿东西正确的

三人组是从头开始建造的,目的是利用latest
Python features
,并从以下方面获得灵感many sources,特别是戴夫·比兹利的Curio由此产生的设计从根本上比老的竞争对手要简单得多,比如asyncioTwisted,但同样有能力。Trio是我一直想要的Python I/O库;我发现它使构建面向I/O的程序变得更容易、更不容易出错,而且更有趣。Perhaps you’ll find the same

这个项目还很年轻,还有点实验性:总体设计是可靠的,现有的特性经过了充分的测试和记录,但是您可能会遇到功能缺失或边缘粗糙的问题。我们鼓励你使用它,但你应该read and
subscribe to issue #1
以获得警告,并有机会就任何破坏兼容性的更改提供反馈

下一站是哪里?

我想试试!太棒了!我们有一个friendly tutorial来帮助您入门;不需要以前的异步编码经验

呃,我不想看这些-给我看一些代码!如果你不耐烦,这里有一个simple concurrency example,一个echo client,和一个echo server

与竞争方法相比,Trio如何使程序更易于阅读和推理?TRIO基于一种我们称之为“结构化并发”的新思维方式。最好的理论介绍是这篇文章Notes on structured concurrency, or: Go statement
considered harmful
或,check out this talk at PyCon 2018观看在旧图书馆与Trio中实施“快乐眼球”算法的演示

酷,但它能在我的系统上工作吗?可能吧!只要您有某种Python3.6或更好的版本(CPython或最新的Py3都可以),并且使用的是Linux、MacOS、Windows或FreeBSD,那么Trio就可以工作。其他环境可能也可以工作,但这些都是我们测试的环境。我们所有的依赖项都是纯Python,除了Windows上的CFFI,它有轮子可用,所以安装应该很容易(不需要C编译器)

我试过了,但它不起作用听到这个我很难受!您可以尝试在我们的chat roomforumfiling a bug,或posting a
question on StackOverflow
,我们会尽最大努力帮助你

三人组很棒,我想让它变得更棒!你是最棒的!有大量的工作要做-填补缺失的功能,建立一个Trio使用库的生态系统,可用性测试(例如,也许可以试着教自己或朋友使用Trio,并列出您遇到的每条错误消息和您感到困惑的地方?),改进文档。请查看我们的guide
for contributors
好了!

我目前还没有使用它的计划,但我喜欢研究I/O库设计!这有点奇怪吗?但老实说,你会很适合这里的。我们有一个whole sub-forum
for discussing structured concurrency
(欢迎其他系统的开发人员!)或查看我们的discussion of design
choices
reading list,以及issues tagged design-discussion

我想确保我公司的律师不会生我的气!不用担心,Trio根据您选择的麻省理工学院或Apache2获得许可。LICENSE有关详细信息,请参阅

行为规范

请投稿人遵循我们的code of conduct在所有项目空间中