Skip to main content

A modern async server framework for HTTP/3 and WebTransport over QUIC.

Project description

HTTP3X

A WebSocket replacement built on HTTP/3 and QUIC.

Async Python server framework for HTTP/3 + WebTransport (QUIC).

What WebSocket would look like if it was designed today.

🚀 Quick Example

from http3x import App
from http3x.wt import Session

app = App()

class Echo(Session):
    async def on_stream(self, stream):
        async for data in stream:
            await stream.send(data)

app.wt.add("/echo", Echo)
app.run(host='::', port=4433, certfile="cert.pem", keyfile="key.pem")

Installation

pip install http3x

🚀 WebTransport Live Example

Streaming AI-style responses over HTTP/3 (WebTransport):

You: hello

AI:
h
he
hel
hell
hello 👋

This is NOT WebSocket.
This is native HTTP/3 streaming over QUIC.

HTTP3X AI Streaming Example

See tests/wt_chat_stream.py and tests/wt_chat_stream.html for the complete example.

⚡ Why not WebSocket?

Feature WebSocket http3x
Protocol TCP QUIC (HTTP/3)
Streams Single stream Multiplexed streams
Datagram No support Built-in datagram
Head-of-line blocking Yes No

🚀 HTTP/3 Live Example

Simple HTTP/3 server with GET and POST endpoints:

from http3x import App
from http3x.h3 import Handler

app = App()

class ApiHandler(Handler):
    async def get(self):
        return {'status': 'ok'}
    
    async def post(self):
        return {'status': 'ok'}

app.h3.add('/h3', ApiHandler)

app.run(host='0.0.0.0', port=443, certfile="cert.pem", keyfile="key.pem")

Using curl with HTTP/3 support:

curl --http3-only -k https://localhost:443/h3
curl --http3-only -k -X POST -d "Hello, HTTP/3!" https://localhost:443/h3

See tests/h3_mini.py for the complete example.

Features

  • HTTP/3 server (QUIC-based)
  • WebTransport (stream + datagram)
  • Multiplexed streams (no head-of-line blocking)
  • Async/await API
  • Built on aioquic

Documentation

More docs coming soon.

Project Links

Contributing

Contributions are welcome! Please visit the GitHub repository to contribute code, report issues, or suggest features.

License

This project is licensed under the Apache License 2.0. See the LICENSE file for details.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

http3x-0.2.1.tar.gz (79.8 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

http3x-0.2.1-py3-none-any.whl (16.2 kB view details)

Uploaded Python 3

File details

Details for the file http3x-0.2.1.tar.gz.

File metadata

  • Download URL: http3x-0.2.1.tar.gz
  • Upload date:
  • Size: 79.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: python-requests/2.33.1

File hashes

Hashes for http3x-0.2.1.tar.gz
Algorithm Hash digest
SHA256 a67a5f5ae42081c9a3b3820654909b8cfd75c6bc513af9d46e5becd28e927694
MD5 b7e5dd2619bc18352c6fb488e8721eab
BLAKE2b-256 ad29c60a1f25c440834b9019d2edef40cff3af88165bd5c62cc6fdbb5ee22ba5

See more details on using hashes here.

File details

Details for the file http3x-0.2.1-py3-none-any.whl.

File metadata

  • Download URL: http3x-0.2.1-py3-none-any.whl
  • Upload date:
  • Size: 16.2 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: python-requests/2.33.1

File hashes

Hashes for http3x-0.2.1-py3-none-any.whl
Algorithm Hash digest
SHA256 1dabba4a1b544beca14cdd95e396e09af068734357d8da6fd9e667dcb482d399
MD5 3c59f913b539597b7da66a307ee113bf
BLAKE2b-256 915d59fe918f5b03c594ce1706a1548fa7996a98ea23222f017cec7917e9c5d0

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page