aistore.sdk.etl.webserver.flask_server

View as Markdown

Module Contents

Classes

NameDescription
FlaskServerFlask server implementation for ETL transformations.

API

class aistore.sdk.etl.webserver.flask_server.FlaskServer(
host: str = '0.0.0.0',
port: int = 8000
)

Bases: ETLServer

Flask server implementation for ETL transformations. Compatible with environments where Flask is preferred over FastAPI.

app
= Flask(__name__)
aistore.sdk.etl.webserver.flask_server.FlaskServer._direct_put(
direct_put_url: str,
data: bytes,
remaining_pipeline: str = '',
path: str = ''
) -> typing.Tuple[int, bytes, int]

Sends the transformed object directly to the specified AIS node (direct_put_url), eliminating the additional network hop through the original target. Used only in bucket-to-bucket offline transforms.

Returns: status code, transformed data, length of the transformed data (if any)

Parameters:

direct_put_url
str

The first URL in the ETL pipeline

data
bytes

The transformed data to send

remaining_pipeline
strDefaults to ''

Comma-separated remaining pipeline stages to pass as header

path
strDefaults to ''

The path of the object.

aistore.sdk.etl.webserver.flask_server.FlaskServer._direct_put_stream(
direct_put_url: str,
data_iter: typing.Iterator[bytes],
remaining_pipeline: str = '',
path: str = ''
) -> typing.Tuple[int, bytes, int]

Stream transformed output directly to the next pipeline stage.

aistore.sdk.etl.webserver.flask_server.FlaskServer._direct_put_stream_with_retry(
direct_put_url: str,
path: str,
remaining_pipeline: str = '',
etl_args: str = ''
) -> typing.Tuple[int, bytes, int]

Streaming direct-put with exponential-backoff retry on transient errors.

Manages reader lifecycle internally, reopening the source on each retry (mirrors FastAPIServer._direct_put_stream_with_retry). For PUT requests without FQN, the body is buffered into a BytesIO via get_data() so retries replay the same bytes.

aistore.sdk.etl.webserver.flask_server.FlaskServer._direct_put_with_retry(
direct_put_url: str,
data: bytes,
remaining_pipeline: str = '',
path: str = ''
) -> typing.Tuple[int, bytes, int]

Buffered direct-put with exponential-backoff retry on transient errors.

aistore.sdk.etl.webserver.flask_server.FlaskServer._get_fqn_content(
path: str
) -> bytes
aistore.sdk.etl.webserver.flask_server.FlaskServer._get_stream_reader(
path,
buffered = False
)

Get a BinaryIO reader for the request source data.

Parameters:

path

The object path being processed.

buffered
Defaults to False

If True, buffer the PUT body into a BytesIO so it can be replayed on retry. If False (default), return request.stream for true constant-memory streaming (no-pipeline path only).

aistore.sdk.etl.webserver.flask_server.FlaskServer._handle_get(
path
)
aistore.sdk.etl.webserver.flask_server.FlaskServer._handle_put(
path
)
aistore.sdk.etl.webserver.flask_server.FlaskServer._handle_request(
path
)
aistore.sdk.etl.webserver.flask_server.FlaskServer._handle_request_buffered(
path
)
aistore.sdk.etl.webserver.flask_server.FlaskServer._handle_request_streaming(
path
)
aistore.sdk.etl.webserver.flask_server.FlaskServer._health()
aistore.sdk.etl.webserver.flask_server.FlaskServer._register_routes()
aistore.sdk.etl.webserver.flask_server.FlaskServer.start()