Framework for services around DSW
Project description
Engine Gateway
Engine Gateway is a lightweight orchestration layer that makes it easy to mount, compose, and run multiple FastAPI applications as a distributed service for easier deployment. It dynamically loads app modules based on configuration and exposes them under configurable subpaths — enabling modular service composition, clean boundaries between components, and centralized deployment.
Usage
Installation
pip install dsw-engine-gateway
# or specific version
pip install dsw-engine-gateway==0.1.0
# or from repository
pip install git+https://github.com/ds-wizard/engine-gateway.git#egg=engine-gateway
Configuration
Create a configuration file (e.g., config.yaml) to define the applications to be mounted:
mounts:
/example1:
module: example_app
app: app
/example2:
module: another_app.app
factory: create_app
kwargs:
debug: true
Naturally, the module should be importable in your Python environment (i.e. having installed Python package exporting that module). You can specify either an app variable (a FastAPI instance) or a factory function that returns a FastAPI instance. Additional keyword arguments can be passed to the factory function via kwargs.
If hosting on different subpath than root, you can configure the base path of the gateway:
gateway:
root_path: /gateway
You can also configure /info endpoint that reports metadata about the mounted applications:
gateway:
info:
enabled: true
token: secretToken
(See config.example.yaml for more details.)
You can also use the following environment variables to override configuration options:
CONFIG_FILE: Path to the configuration file (default:config.yaml).GATEWAY_ROOT_PATH: Base path for the gateway (overridesgateway.root_path).GATEWAY_INFO_ENABLED: Enable or disable the/infoendpoint (overridesgateway.info.enabled).GATEWAY_INFO_TOKEN: Token for accessing the/infoendpoint (overridesgateway.info.token).SENTRY_DSN: DSN for Sentry error tracking (enables Sentry integration if set).SENTRY_TRACES_SAMPLE_RATE: Sample rate for Sentry performance tracing (default:1.0).SENTRY_PROFILES_SAMPLE_RATE: Sample rate for Sentry profiling (default:1.0).SENTRY_MAX_BREADCRUMBS: Maximum number of breadcrumbs to store in Sentry (default:100).SENTRY_ENVIRONMENT: Environment name for Sentry (default:production).SENTRY_AWS_LAMBDA: Enable AWS Lambda integration for Sentry (default:false).
Usage
You can run the Engine Gateway using Uvicorn:
uvicorn engine_gateway:create_app --host
In typical use cases, you would use engine_gateway as a dependency and re-packing it together with your config files and environment setup into a Docker image for deployment:
FROM dsw-engine-gateway:latest
COPY requirements.txt /app/requirements.txt
RUN pip install -r /app/requirements.txt
COPY config.yaml /app/config.yaml
CMD ["uvicorn", "engine_gateway:create_app", "--host", "0.0.0.0", "--port", "80", "--proxy-headers"]
License
This project is licensed under the Apache-2.0 License. See the LICENSE file for details.
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 dsw_engine_gateway-1.0.0.tar.gz.
File metadata
- Download URL: dsw_engine_gateway-1.0.0.tar.gz
- Upload date:
- Size: 10.0 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
b5db2f19dce8a9ea0796bde7cff5917533abcd5f41b3b550512bdb9c4e508b8e
|
|
| MD5 |
4b99471faca4f2f6889350d378e9ab6e
|
|
| BLAKE2b-256 |
a78e766fa7df22048043a8c00188554b0ba6d4a6137ff63178a3bdf10c7fede6
|
File details
Details for the file dsw_engine_gateway-1.0.0-py2.py3-none-any.whl.
File metadata
- Download URL: dsw_engine_gateway-1.0.0-py2.py3-none-any.whl
- Upload date:
- Size: 11.8 kB
- Tags: Python 2, Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
d5d0ff24db62f45432c0fefc2bb24108882e55df92a7cc8229f37eb5687152de
|
|
| MD5 |
0cb2b999d7e7defeab696c986009bcda
|
|
| BLAKE2b-256 |
02381962949b4eabdeb94c80a27e513e5c6300f94b5537743723e6d8929231fe
|