HTTP/3 API¶
The HTTP/3 API performs no I/O on its own, leaving this to the API user. This allows you to integrate HTTP/3 in any Python application, regardless of the concurrency model you are using.
Connection¶
- class aioquic.h3.connection.H3Connection(quic, enable_webtransport=False)¶
A low-level HTTP/3 connection object.
- Parameters:
quic (
QuicConnection
) – AQuicConnection
instance.
- create_webtransport_stream(session_id, is_unidirectional=False)¶
Create a WebTransport stream and return the stream ID.
Note
After calling this method you need to call the QUIC connection
datagrams_to_send()
method to retrieve data which needs to be sent over the network. If you are using the asyncio API, calling thetransmit()
method will do it for you.
- handle_event(event)¶
Handle a QUIC event and return a list of HTTP events.
- send_data(stream_id, data, end_stream)¶
Send data on the given stream.
Note
After calling this method you need to call the QUIC connection
datagrams_to_send()
method to retrieve data which needs to be sent over the network. If you are using the asyncio API, calling thetransmit()
method will do it for you.
- send_datagram(stream_id, data)¶
Send a datagram for the specified stream.
If the stream ID is not a client-initiated bidirectional stream, an
InvalidStreamTypeError
exception is raised.Note
After calling this method you need to call the QUIC connection
datagrams_to_send()
method to retrieve data which needs to be sent over the network. If you are using the asyncio API, calling thetransmit()
method will do it for you.
- send_headers(stream_id, headers, end_stream=False)¶
Send headers on the given stream.
Note
After calling this method you need to call the QUIC connection
datagrams_to_send()
method to retrieve data which needs to be sent over the network. If you are using the asyncio API, calling thetransmit()
method will do it for you.
- send_push_promise(stream_id, headers)¶
Send a push promise related to the specified stream.
Returns the stream ID on which headers and data can be sent.
If the stream ID is not a client-initiated bidirectional stream, an
InvalidStreamTypeError
exception is raised.If there are not available push IDs, an
NoAvailablePushIDError
exception is raised.Note
After calling this method you need to call the QUIC connection
datagrams_to_send()
method to retrieve data which needs to be sent over the network. If you are using the asyncio API, calling thetransmit()
method will do it for you.
Events¶
- class aioquic.h3.events.H3Event¶
Base class for HTTP/3 events.
- class aioquic.h3.events.DatagramReceived(data, stream_id)¶
The DatagramReceived is fired whenever a datagram is received from the the remote peer.
- class aioquic.h3.events.DataReceived(data, stream_id, stream_ended, push_id=None)¶
The DataReceived event is fired whenever data is received on a stream from the remote peer.
- class aioquic.h3.events.HeadersReceived(headers, stream_id, stream_ended, push_id=None)¶
The HeadersReceived event is fired whenever headers are received.
- class aioquic.h3.events.PushPromiseReceived(headers, push_id, stream_id)¶
The PushedStreamReceived event is fired whenever a pushed stream has been received from the remote peer.
- class aioquic.h3.events.WebTransportStreamDataReceived(data, stream_id, stream_ended, session_id)¶
The WebTransportStreamDataReceived is fired whenever data is received for a WebTransport stream.
Exceptions¶
- class aioquic.h3.exceptions.H3Error¶
Base class for HTTP/3 exceptions.
- class aioquic.h3.exceptions.InvalidStreamTypeError¶
An action was attempted on an invalid stream type.
- class aioquic.h3.exceptions.NoAvailablePushIDError¶
There are no available push IDs left, or push is not supported by the remote party.