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)[source]¶
A low-level HTTP/3 connection object.
- Parameters:
quic (
QuicConnection) – AQuicConnectioninstance.
- create_webtransport_stream(session_id, is_unidirectional=False)[source]¶
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.
- send_data(stream_id, data, end_stream)[source]¶
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)[source]¶
Send a datagram for the specified stream.
If the stream ID is not a client-initiated bidirectional stream, an
InvalidStreamTypeErrorexception 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)[source]¶
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)[source]¶
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
InvalidStreamTypeErrorexception is raised.If there are not available push IDs, an
NoAvailablePushIDErrorexception 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.DatagramReceived(data, stream_id)[source]¶
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)[source]¶
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)[source]¶
The HeadersReceived event is fired whenever headers are received.
- class aioquic.h3.events.PushPromiseReceived(headers, push_id, stream_id)[source]¶
The PushedStreamReceived event is fired whenever a pushed stream has been received from the remote peer.