Request API

This module provides low-level API request/response interfaces based on aiohttp.

Depending on the session object where the request is made from, Request and Response differentiate their behavior: works as plain Python functions or returns awaitables.

class ai.backend.client.request.Request(method='GET', path=None, content=None, *, content_type=None, params=None, reporthook=None, override_api_version=None)

The API request object.

with async with fetch(**kwargs) as Response

Sends the request to the server and reads the response.

You may use this method with AsyncSession only, following the pattern below:

from ai.backend.client.request import Request
from ai.backend.client.session import AsyncSession

async with AsyncSession() as sess:
  rqst = Request('GET', ...)
  async with rqst.fetch() as resp:
    print(await resp.text())
Return type:

FetchContextManager

async with connect_websocket(**kwargs) as WebSocketResponse or its derivatives

Creates a WebSocket connection. :rtype: WebSocketContextManager

Warning

This method only works with AsyncSession.

property content: bytes | bytearray | str | StreamReader | IOBase | None

Retrieves the content in the original form. Private codes should NOT use this as it incurs duplicate encoding/decoding.

set_content(value, *, content_type=None)

Sets the content of the request.

Return type:

None

set_json(value)

A shortcut for set_content() with JSON objects.

Return type:

None

attach_files(files)

Attach a list of files represented as AttachedFile.

Return type:

None

connect_events(**kwargs)

Creates a Server-Sent Events connection. :rtype: SSEContextManager

Warning

This method only works with AsyncSession.

class ai.backend.client.request.Response(session, underlying_response, *, async_mode=False, **kwargs)
class ai.backend.client.request.WebSocketResponse(session, underlying_response, **kwargs)

A high-level wrapper of aiohttp.ClientWebSocketResponse.

class ai.backend.client.request.FetchContextManager(session, rqst_ctx_builder, *, response_cls=<class 'ai.backend.client.request.Response'>, check_status=True)

The context manager returned by Request.fetch().

It provides asynchronous context manager interfaces only.

class ai.backend.client.request.WebSocketContextManager(session, ws_ctx_builder, *, on_enter=None, response_cls=<class 'ai.backend.client.request.WebSocketResponse'>)

The context manager returned by Request.connect_websocket().

class ai.backend.client.request.AttachedFile(filename, stream, content_type)

A struct that represents an attached file to the API request.

Parameters:
  • filename (str) – The name of file to store. It may include paths and the server will create parent directories if required.

  • stream (Any) – A file-like object that allows stream-reading bytes.

  • content_type (str) – The content type for the stream. For arbitrary binary data, use “application/octet-stream”.

content_type

Alias for field number 2

count(value, /)

Return number of occurrences of value.

filename

Alias for field number 0

index(value, start=0, stop=9223372036854775807, /)

Return first index of value.

Raises ValueError if the value is not present.

stream

Alias for field number 1