No project description provided
Project description
Compox
Compox is a simple Python execution engine based on FastAPI with a MinIO object storage and Celery task queue. The app is designed to run algorithms written in Python on the server and report the results to the user.
Installation
Compox can be installed through PyPI:
pip install compox
You can also install the server by cloning this repository and installing it from source.
Note that some additional dependencies, such as MinIO executable for your operating system, will be downloaded on the first run of the server.
Running the server
Once installed into your Python environment, it's recommended to generate an initial configuration file with compox generate-config.
To see the available options for the generate-config command, you can run:
compox generate-config --help
The Compox can be run using the compox command. This command is available in the virtual environment created during the setup process. Run the following command to list the available commands:
compox --help
To run the Compox, use the following command:
compox run --config /path/to/config.yaml
Deploying algorithms
A future release of this package will include a detailed tutorial on how to prepare a data processing algorithm for T3D applications.
Once your algorithm is ready, you can use the compox deploy-algorithms command to deploy it to your server. This command will read the algorithm definitions from the specified configuration file and deploy them to the server. For example:
compox deploy-algorithms --config /path/to/config.yaml
To see the available options for the deploy-algorithms command, you can run:
compox deploy-algorithms --help
Configuration
The server uses pydantic settings for configuration. The configuration can be either set in a yaml file or as arguments when running the server.
- Ensure all paths and URLs are correctly set before running the application.
- Adjust CUDA settings based on hardware capabilities.
- Logging paths should be accessible by the application to prevent errors.
- MinIO settings must align with whether it is run locally or through an external S3 service.
- See the configuration reference below for detailed configuration options.
Configuration reference
Compox Configuration Reference
| Section | Field | Default | Description |
|---|---|---|---|
port |
5461 |
The main server port used to make requests | |
deploy_algorithms_from |
"./algorithms" |
Directory for algorithm deployment sources. | |
log_path |
"LOG_DEFAULT:compox.log" |
Path to the main log file (supports dynamic prefixes). | |
config |
None |
Optional config path override. | |
info |
product_name |
"TESCAN 3D Backend" |
Product display name. |
info |
server_tags |
[] → auto appends "compox" |
Tags attached to the server. "compox" is added automatically. |
info |
group_name |
"TESCAN GROUP, a.s." |
Name of the corporate group. |
info |
organization_name |
"TESCAN 3DIM, s.r.o." |
Full name of the organization. |
info |
organization_domain |
"tescan3dim.com" |
Domain used in server configuration. |
info |
version |
"0.1" |
Semantic version of the server release. |
gui |
algorithm_add_remove_in_menus |
False |
Enables/disables GUI menu for algorithm management. |
gui |
use_systray |
False |
Enables/disables systray GUI integration. |
gui |
icon_path |
"../compox/resources/compoxbackend.ico" |
Path to the systray icon (supports dynamic prefixes) |
storage |
collection_prefix |
"" |
Prefix applied to object store collections. (useful for AWS s3 store, where unique bucket names are needed) |
storage |
data_store_expire_days |
1 |
Number of days until stored datasets expire. |
storage |
access_key_id |
UUIDv4 |
Generated access key for storage backend. If null is provided, random UUIDv4 is generated. |
storage |
secret_access_key |
UUIDv4 |
Generated secret key for storage backend. If null is provided, random UUIDv4 is generated. |
storage.backend_settings (minio) |
provider |
"minio" |
Selected backend provider. |
storage.backend_settings (minio) |
start_instance |
True |
Whether to start a local MinIO server. |
storage.backend_settings (minio) |
port |
9091 |
MinIO service port. |
storage.backend_settings (minio) |
console_port |
9090 |
MinIO admin console port. |
storage.backend_settings (minio) |
executable_path |
"minio/minio_bin" |
Path to the MinIO binary (accepts dynamic prefixes). |
storage.backend_settings (minio) |
storage_path |
"minio/compox_store" |
Storage directory used by MinIO (accepts dynamic prefixes). |
storage.backend_settings (minio) |
aws_region |
None |
Optional AWS compatibility region. |
storage.backend_settings (minio) |
s3_domain_name |
None |
Optional domain override for S3 compatibility. |
storage.backend_settings (minio) |
s3_endpoint_url |
Derived from port |
Computed as http://localhost:{port}. |
storage.backend_settings (aws) |
provider |
"aws" |
AWS backend selection. |
storage.backend_settings (aws) |
s3_endpoint_url |
None |
Optional override for S3 endpoint URL. |
storage.backend_settings (aws) |
aws_region |
None |
AWS region (e.g. us-east-1). |
storage.backend_settings (aws) |
s3_domain_name |
None |
Domain used for S3-style URLs. |
inference |
device |
"cuda" |
Device used for model inference ("cpu", "cuda", "mps"). |
inference |
cuda_visible_devices |
"0" |
Comma-separated list of visible CUDA GPUs. |
inference.backend_settings (fastapi) |
executor |
"fastapi_background_tasks" |
Task executor type. |
inference.backend_settings (fastapi) |
worker_number |
1 |
Number of worker threads for FastAPI tasks. |
inference.backend_settings (celery) |
executor |
"celery" |
Task executor type. |
inference.backend_settings (celery) |
worker_name |
"compox_worker" |
Name of the Celery worker. |
inference.backend_settings (celery) |
broker_url |
Required | URL of the message broker (e.g. amqp://, redis://). |
inference.backend_settings (celery) |
result_backend |
"rpc://" |
Backend used to store task results. |
inference.backend_settings (celery) |
run_flower |
False |
Whether to start a Flower dashboard. |
inference.backend_settings (celery) |
flower_port |
None |
Port for Flower UI (if run_flower is True). |
ssl |
use_ssl |
False |
Enables HTTPS if True. |
ssl |
ssl_keyfile |
None |
Optional path to the SSL key file (accepts dynamic prefixes). |
ssl |
ssl_certfile |
None |
Optional path to the SSL certificate file (accepts dynamic prefixes). |
middleware |
allow_origins |
[] |
List of allowed CORS origins. |
middleware |
allow_methods |
["GET"] |
HTTP methods permitted in CORS. |
middleware |
allow_headers |
[] |
Custom headers permitted in CORS. |
middleware |
allow_credentials |
False |
Whether to allow credentials in CORS. |
middleware |
expose_headers |
[] |
Headers exposed to browsers. |
middleware |
max_age |
3600 |
Cache time (in seconds) for CORS preflight. |
Some fields in the Compox configuration (such as log_path, icon_path, ssl_keyfile, etc.) support dynamic prefixes that resolve to OS-specific or runtime-specific paths. This allows for portability across platforms (e.g., Windows, Linux) and between development and production environments.
Supported Prefixes
| Prefix | Meaning (Resolved To...) |
|---|---|
LOG_DEFAULT: |
A platform-dependent log directory: |
- Windows: %TEMP%/<organization>/<product> |
|
- Linux/macOS: /var/log/<organization>/<product> |
|
PROGRAMDATA_DEFAULT: |
A system-wide data directory (Windows only): |
- e.g., %PROGRAMDATA%/<organization>/<product> |
|
- On Linux/macOS, defaults to "." (current dir) |
|
RELATIVE_DEFAULT: |
A relative path to the current executable (PyInstaller compatible): |
- If bundled: sys._MEIPASS/<path> |
|
- Otherwise: "./<path>" |
These are resolved at runtime in the
Settings.parse_paths()validator method.
Example
log_path: "LOG_DEFAULT:compox.log"
ssl:
use_ssl: true
ssl_keyfile: "PROGRAMDATA_DEFAULT:ssl/server.key"
ssl_certfile: "PROGRAMDATA_DEFAULT:ssl/server.crt"
gui:
icon_path: "RELATIVE_DEFAULT:resources/icon.ico"
Server Execution and Tooling
Compox can be run using the compox command. This command is available in the virtual environment created during the setup process. Run the following command to list the available commands:
compox --help
Running the Server
To run the Compox, use the following command:
compox run --config config.yaml
Replace config.yaml with the path to your configuration file. The server will start and listen on the port specified in the configuration.
You can also specify the configuration file directly in the command line, which will override the default configs and the configuarion field in the config file. Nested configuration fields can be specified using dot notation. For example, to set the executor to celery and the worker name to my_worker, you can run:
compox run --config config.yaml --inference.backend_settings.executor celery --inference.backend_settings.worker_name my_worker
To see the available options for the run command, you can run:
compox run --help
Worker spawning (for Celery)
To spawn a Celery worker, you can use the compox spawn-worker command. This command will start a Celery worker with the specified configuration. You can specify the worker name and other settings as needed. For example:
compox spawn-worker --config config.yaml --inference.backend_settings.worker_name my_worker
To see the available options for the spawn-worker command, you can run:
compox spawn-worker --help
Running tests
To run the tests, you can use the compox test command. This command will run the tests defined in the tests directory. You should provide the path to the folder containing the tests (--test-path), which is tests by default. You can either provide a path to a specific configuration file (--config), which will spawn a server instance and run the tests against it, or you can run the tests against a running server instance by providing the --server-url argument. For example:
compox test --test-path tests --config config.yaml
To see the available options for the test command, you can run:
compox test --help
Deploy algorithms
To deploy algorithms to the server, you can use the compox deploy-algorithms command. This command will read the algorithm definitions from the specified configuration file and deploy them to the server. For example:
compox deploy-algorithms --config app_server.yaml
To see the available options for the deploy-algorithms command, you can run:
compox deploy-algorithms --help
Generate configuration
If you don't have a configuration file, you can generate a default configuration file using the compox generate-config command. This command will create a default configuration file in the specified path. You can also override the default fields in the configuration file by providing them as command line arguments. You will be prompted if you try to generate a configuration file that already exists. For example:
compox generate-config --path app_server.yaml --port 8888 --gui.use_systray True
To see the available options for the generate-config command, you can run:
compox generate-config --help
Serving documentation
You can update documentation by navigating to the python-computing-backend/compox/docs directory and running the following command:
make.bat html
This will generate the documentation in the _build/html directory. After the documentation is built, you can serve it using the compox serve-docs command. This command will start a simple HTTP server to serve the documentation files. You can specify the directory where the documentation is located and the port on which to serve it. For example:
compox serve-docs --directory docs/_build/html --port 8000
To see the available options for the serve-docs command, you can run:
compox serve-docs --help
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file compox-2.0.0.dev2.tar.gz.
File metadata
- Download URL: compox-2.0.0.dev2.tar.gz
- Upload date:
- Size: 530.0 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
ec0f36f1231a0901eab8657db86f03f737463131964b29dfbc20cb5b296998e5
|
|
| MD5 |
d3eee93542e190a8703a1320849dac08
|
|
| BLAKE2b-256 |
0252a8c24fefcbe818483cb0f6d3fca53ac819649a5e05b969c46cb65a03ccda
|
Provenance
The following attestation bundles were made for compox-2.0.0.dev2.tar.gz:
Publisher:
release.yml on tescan-3dim/compox
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
compox-2.0.0.dev2.tar.gz -
Subject digest:
ec0f36f1231a0901eab8657db86f03f737463131964b29dfbc20cb5b296998e5 - Sigstore transparency entry: 619018063
- Sigstore integration time:
-
Permalink:
tescan-3dim/compox@89685ba2b3cdd2001d2c2fd653b0beeca5f6b4e8 -
Branch / Tag:
refs/tags/compox-v2.0.0dev2 - Owner: https://github.com/tescan-3dim
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@89685ba2b3cdd2001d2c2fd653b0beeca5f6b4e8 -
Trigger Event:
push
-
Statement type:
File details
Details for the file compox-2.0.0.dev2-py3-none-any.whl.
File metadata
- Download URL: compox-2.0.0.dev2-py3-none-any.whl
- Upload date:
- Size: 524.8 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
40626d637796b7e70b28c477f6862c5de82fc2dd66a5fc21f0ae51beabe4f560
|
|
| MD5 |
88194ffe54dad57a7987f62c19fad164
|
|
| BLAKE2b-256 |
f274f0c183f3406c474b6fc5a5b8e2ceff22343a719ffd66c02cec4c27c80246
|
Provenance
The following attestation bundles were made for compox-2.0.0.dev2-py3-none-any.whl:
Publisher:
release.yml on tescan-3dim/compox
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
compox-2.0.0.dev2-py3-none-any.whl -
Subject digest:
40626d637796b7e70b28c477f6862c5de82fc2dd66a5fc21f0ae51beabe4f560 - Sigstore transparency entry: 619018070
- Sigstore integration time:
-
Permalink:
tescan-3dim/compox@89685ba2b3cdd2001d2c2fd653b0beeca5f6b4e8 -
Branch / Tag:
refs/tags/compox-v2.0.0dev2 - Owner: https://github.com/tescan-3dim
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@89685ba2b3cdd2001d2c2fd653b0beeca5f6b4e8 -
Trigger Event:
push
-
Statement type: