Orchestra Python SDK
This is a lightweight SDK that allows Orchestra to interact with self-hosted applications (Tasks).
The basic premise is for your self-hosted Task to send back status updates and logs to Orchestra. This is done via HTTP requests. The Task is started by Orchestra.
Installation
pip install orchestra-sdk
You initialise the package by creating an instance of the OrchestraSDK class. It requires the API key that will connect with Orchestra - this can be found in your settings page. Orchestra will automatically set the other environment variables when the Task is triggered:
ORCHESTRA_WEBHOOK_URL: The URL to send status updates toORCHESTRA_TASK_RUN_ID: The UUID of the Task being executed
from orchestra_sdk.orchestra import OrchestraSDK
orchestra = OrchestraSDK(api_key="your_api_key")
Orchestra recommends retrieving the API key from some secret store that you have configured. If that is not possible, you can set the API key as an environment variable and read that value in your code.
Task decorator
The decorator will handle updating the Task in Orchestra automatically. It will send a RUNNING status update when the function is called, and then send a SUCCEEDED or FAILED status update when the function finishes.
from orchestra_sdk.orchestra import OrchestraSDK
orchestra = OrchestraSDK(api_key="your_api_key")
@orchestra.run()
def my_function(arg1, arg2=1):
print("Running complex process")
Summary
- The decorator will firstly read and validate the environment variables
- It will send a
RUNNINGstatus update to Orchestra - Your function will then run
- If an exception is raised, the decorator will send a
FAILEDstatus update to Orchestra - If the function finishes without an error being raised, regardless of the return value, the decorator will send a
SUCCEEDEDstatus update to Orchestra
Updating Tasks manually
For additional control over when to update the status of the Task, or for sending messages to Orchestra, you can use the update_task method of the OrchestraSDK class.
from orchestra_sdk.enum import TaskRunStatus
from orchestra_sdk.orchestra import OrchestraSDK
orchestra = OrchestraSDK(api_key="your_api_key")
def my_function(arg1, arg2=1):
print("Start my complex process")
orchestra.update_task(status=TaskRunStatus.RUNNING, message="Starting process.")
print("Running complex process")
orchestra.update_task(message="Running process.")
fn_result = complex_process()
if fn_result == 0:
orchestra.update_task(status=TaskRunStatus.SUCCEEDED)
else:
orchestra.update_task(status=TaskRunStatus.FAILED, message="Process failed")
Notes
- At least one of
statusormessagemust be provided - If the function fails or throws an exception, Orchestra might not register that the Task has failed, which could have downstream consequences on your pipeline. Consider wrapping your function in a try/except block and calling
update_taskwithstatus=TaskRunStatus.FAILEDin the except block.
Metadata
Release files for orchestra-sdk 0.0.16
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| orchestra_sdk-0.0.16.tar.gz | 9.3 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| orchestra_sdk-0.0.16-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 17.1 kB
Release files / orchestra_sdk-0.0.16.tar.gz
| Download URL | orchestra_sdk-0.0.16.tar.gz |
|---|---|
| Size | 9.3 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
b0d9595a861c215e3b8cb66b98628147ba5afbf87bd451e3fde848ce6fe5b5d6
|
|
BLAKE2b-256 checksum How to use checksums |
071d82382026c4ba208e284eb8735adad8964c23abe3378a973e55d06d80d5c3
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/5.1.1 CPython/3.12.2
|
Release files / orchestra_sdk-0.0.16-py3-none-any.whl
| Download URL | orchestra_sdk-0.0.16-py3-none-any.whl |
|---|---|
| Size | 7.8 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
0f1f34c38357ebc277e59aeb63bb63ab2728cad7d9832200095c6fcfe4f6af85
|
|
BLAKE2b-256 checksum How to use checksums |
216d4a3239534bb4ce99aa896a7f90f48a9bd26a48fc36da53b2dc49023b20e9
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/5.1.1 CPython/3.12.2
|