Based on mcaiworkersdk.
To build the rust application
bash
cargo build
To run the unit tests, you must build the provided worker example (see the Build section above).
bash
cargo test
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:
get_parameters_type() -> typing.Type
(static):
init()
(static):
process(handle_callback, parameters, job_id) -> dict
(static) with parameters
instance of the worker parameter
class:
If the media
feature is enabled, the following function must be implemented:
init_process(stream_handler, format_context, parameters) -> list
(static) with parameters
instance of the worker
parameter class:
GenericStreamDescriptor
sprocess_frames(job_id, stream_index, frames) -> dict
(static):
process_ebu_ttml_live(job_id, stream_index, ttml_contents) -> dict
(static):
ending_process()
(static):
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.
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
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