Python binding for Rust Media Cloud AI Worker SDK

Based on mcaiworkersdk.

Build

To build the rust application

bash cargo build

Test

To run the unit tests, you must build the provided worker example (see the Build section above).

bash cargo test

Usage

This worker uses the PyO3 crate to load a Python file, and to execute it.

To implement a worker, a pyproject.toml file must be created with metadata describing the worker. It must at least contain both project and build-system sections.

Example: (minimal configuration)

```toml [project] name = "mypythonworker" version = "1.2.3" description = "My Python worker" license = { text = "MIT" }

[build-system] requires = [] ```

The Python worker parameters must be into a Python class as static attributes. Each parameter type must be explicitly set.

Example:

```python import typing

class MyWorkerParameters: aparameter: int anotherparameter: typing.Optional[str] = None ```

The Python worker itself must be defined as a Python class implementing some methods:

If the media feature is enabled, the following function must be implemented:

NB: the process(handle_callback, parameters, job_id) -> dict function is not called when the media feature is enabled.

For more details, see the provided worker.py and media_worker.py examples.

Set the PYTHON_WORKER_FILENAME environment variable to specify the path of your Python worker. Otherwise, the worker.py file will be loaded by default.

Running examples

Simple worker

bash RUST_LOG=debug \ SOURCE_ORDERS="examples/message.json" \ PYTHON_WORKER_FILENAME="worker.py" \ SOURCE_PATH="README.md" \ DESTINATION_PATH="README.md.out" \ cargo run

Media worker

First set the media filename:

bash export SOURCE_PATH="/folder/filename.ext"

Then run the SDK with these parameters:

bash RUST_LOG=debug \ SOURCE_ORDERS="examples/message.json" \ PYTHON_WORKER_FILENAME="media_worker.py" \ DESTINATION_PATH="results.json" \ cargo run --features media