aioquic-gcc49-An implementation of QUIC and HTTP/3-Madricas

发布:2020-12-22 14:03:34.702868

作者:Madricas

### 作者邮箱:madricas@outlook.fr

### 首页:https://github.com/madricas/aioquic

### 文档:None

### 下载链接

aioquic

|rtd| |pypi-v| |pypi-pyversions| |pypi-l| |travis| |codecov| |black|

.. |rtd| image:: https://readthedocs.org/projects/aioquic/badge/?version=latest :target: https://aioquic.readthedocs.io/

.. |pypi-v| image:: https://img.shields.io/pypi/v/aioquic.svg :target: https://pypi.python.org/pypi/aioquic

.. |pypi-pyversions| image:: https://img.shields.io/pypi/pyversions/aioquic.svg :target: https://pypi.python.org/pypi/aioquic

.. |pypi-l| image:: https://img.shields.io/pypi/l/aioquic.svg :target: https://pypi.python.org/pypi/aioquic

.. |travis| image:: https://img.shields.io/travis/com/aiortc/aioquic.svg :target: https://travis-ci.com/aiortc/aioquic

.. |codecov| image:: https://img.shields.io/codecov/c/github/aiortc/aioquic.svg :target: https://codecov.io/gh/aiortc/aioquic

.. |black| image:: https://img.shields.io/badge/code%20style-black-000000.svg :target: https://github.com/python/black

What is aioquic?

aioquic is a library for the QUIC network protocol in Python. It features a minimal TLS 1.3 implementation, a QUIC stack and an HTTP/3 stack.

QUIC standardisation is not finalised yet, but aioquic closely tracks the specification drafts and is regularly tested for interoperability against other QUIC implementations_.

To learn more about aioquic please read the documentation_.

Why should I use aioquic?

aioquic has been designed to be embedded into Python client and server libraries wishing to support QUIC and / or HTTP/3. The goal is to provide a common codebase for Python libraries in the hope of avoiding duplicated effort.

Both the QUIC and the HTTP/3 APIs follow the "bring your own I/O" pattern, leaving actual I/O operations to the API user. This approach has a number of advantages including making the code testable and allowing integration with different concurrency models.

Features

  • QUIC stack conforming with draft-23
  • HTTP/3 stack conforming with draft-23
  • minimal TLS 1.3 implementation
  • IPv4 and IPv6 support
  • connection migration and NAT rebinding
  • logging TLS traffic secrets
  • logging QUIC events in QLOG format
  • HTTP/3 server push support

Running the examples

aioquic requires Python 3.6 or better, and the OpenSSL development headers.

.. code-block:: console

$ sudo apt install libssl-dev python3-dev

After checking out the code using git you can run:

.. code-block:: console

$ pip install -e . $ pip install aiofiles asgiref httpbin starlette wsproto

HTTP/3 server .............

You can run the example server, which handles both HTTP/0.9 and HTTP/3:

.. code-block:: console

$ python examples/http3server.py --certificate tests/sslcert.pem --private-key tests/ssl_key.pem

HTTP/3 client .............

You can run the example client to perform an HTTP/3 request:

.. code-block:: console

$ python examples/http3_client.py --ca-certs tests/pycacert.pem https://localhost:4433/

Alternatively you can perform an HTTP/0.9 request:

.. code-block:: console

$ python examples/http3_client.py --ca-certs tests/pycacert.pem --legacy-http https://localhost:4433/

You can also open a WebSocket over HTTP/3:

.. code-block:: console

$ python examples/http3_client.py --ca-certs tests/pycacert.pem wss://localhost:4433/ws

License

aioquic is released under the BSD license_.

.. _read the documentation: https://aioquic.readthedocs.io/en/latest/ .. _QUIC implementations: https://github.com/quicwg/base-drafts/wiki/Implementations .. _cryptography: https://cryptography.io/ .. _BSD license: https://aioquic.readthedocs.io/en/latest/license.html

 Copy from pypi.org

查询时间:98.468ms
渲染时间:98.628ms

本文同步分享在 博客“zhenruyan”(other)。
如有侵权,请联系 support@oschina.cn 删除。
本文参与“OSC源创计划”,欢迎正在阅读的你也加入,一起分享。

04-18 09:38