core

ModelsAPI

class msdss_models_api.core.ModelsAPI(users_api=None, database=None, models=[], worker=None, broker_url='redis://localhost:6379/0', backend_url='redis://localhost:6379/0', folder='./models', models_router_settings={}, load_env=True, env=<msdss_models_api.env.ModelsDotEnv object>, api=<fastapi.applications.FastAPI object>, *args, **kwargs)[source]

Models API class for managing models.

Parameters
  • users_api (msdss_users_api.core.UsersAPI or None) – Users API object to enable user authentication for models routes. If None, user authentication will not be used for models routes.

  • database (msdss_base_database:msdss_base_database.core.Database or None) – A database object for using models with data from the database. If None, a default database object will be created.

  • models (list(msdss_models_api.models.Model) or dict(msdss_models_api.models.Model)) – List or dict of available Model objects to use for creating and managing model instances. If list, ensure that the class names are unique, otherwise the last object in the list takes priority.

  • worker (celery:celery.Celery or None) – Celery worker for background processes. If None, a default worker will be created using parameters broker_url and backend_url.

  • broker_url (str or None) – Link to connect to a Redis broker. Env vars will take priority - see parameter env. If parameter worker is set, this will not be applied.

  • backend_url (str or None) –

    Link to connect to a Redis backend. Env vars will take priority - see parameter env. If parameter worker is set, this will not be applied.

  • folder (str) – The folder path to store models in. The folder will be created if it does not exist. Env vars will take priority - see parameter env.

  • models_router_settings (dict) – Keyword arguments passed to msdss_models_api.routers.get_models_router() except bg_manager.

  • load_env (bool) – Whether to load variables from a file with environmental variables at env_file or not.

  • env (msdss_users_api.env.ModelsDotEnv) –

    An object to set environment variables related to users configuration. These environment variables will overwrite the parameters above if they exist.

    By default, the related parameters above are assigned to each of the environment variables seen below if load_env is True:

    <parameter> = <environment variable>
    
    broker_url = MSDSS_MODELS_BROKER_URL
    backend_url = MSDSS_MODELS_BACKEND_URL
    folder = MSDSS_MODELS_FOLDER
    

  • api (fastapi:fastapi.FastAPI) – API object for creating routes.

  • *args – Additional arguments passed to msdss_base_api.core.API.

  • **kwargs – Additional arguments passed to msdss_base_api.core.API.

models_api_database

Database object for users API.

Type

msdss_base_database:msdss_base_database.core.Database

models_api_worker

Same as parameter worker.

Type

celery:celery.Celery

Author

Richard Wen <rrwen.dev@gmail.com>

Example

Create models api without users:

from msdss_base_database import Database
from msdss_models_api.models import Model
from msdss_models_api import ModelsAPI

# Create database object
database = Database(
    driver='postgresql',
    user='msdss',
    password='msdss123',
    host='localhost',
    port='5432',
    database='msdss'
)

# Create models api without users
app = ModelsAPI(
    models=[Model],
    database=database,
    broker_url='redis://localhost:6379/0',
    backend_url='redis://localhost:6379/0'
)

# Run the app with app.start()
# Try API at http://localhost:8000/docs
# app.start()

Create Models API with users:

from msdss_base_database import Database
from msdss_models_api.models import Model
from msdss_models_api import ModelsAPI
from msdss_users_api import UsersAPI

# Create database object
database = Database(
    driver='postgresql',
    user='msdss',
    password='msdss123',
    host='localhost',
    port='5432',
    database='msdss'
)

# Create a users api
# CHANGE SECRETS TO STRONG PHRASES
users_api = UsersAPI(
    'cookie-secret',
    'jwt-secret',
    'reset-secret',
    'verification-secret',
    database=database
)

# Create a models api with users
app = ModelsAPI(
    users_api,
    models=[Model],
    database=database,
    broker_url='redis://localhost:6379/0',
    backend_url='redis://localhost:6379/0'
)

# Add users routes
app.add_app(users_api)

# Run the app with app.start()
# Try API at http://localhost:8000/docs
# app.start()

Create Models API with users and data management:

from msdss_base_database import Database
from msdss_models_api.models import Model
from msdss_models_api import ModelsAPI
from msdss_users_api import UsersAPI
from msdss_data_api import DataAPI

# Create database object
database = Database(
    driver='postgresql',
    user='msdss',
    password='msdss123',
    host='localhost',
    port='5432',
    database='msdss'
)

# Create a users api
# CHANGE SECRETS TO STRONG PHRASES
users_api = UsersAPI(
    'cookie-secret',
    'jwt-secret',
    'reset-secret',
    'verification-secret',
    database=database
)

# Create a data api with users
data_api = DataAPI(users_api, database=database)

# Create a models api with users and data management
app = ModelsAPI(
    users_api,
    models=[Model],
    database=database,
    broker_url='redis://localhost:6379/0',
    backend_url='redis://localhost:6379/0'
)

# Add users and data routes
app.add_apps(users_api, data_api)

# Run the app with app.start()
# Try API at http://localhost:8000/docs
# app.start()

get_worker

ModelsAPI.get_worker()[source]

Get the background worker to process background tasks.

Author

Richard Wen <rrwen.dev@gmail.com>

Example

from msdss_models_api.models import Model
from msdss_models_api import ModelsAPI

# Create models api without users
app = ModelsAPI(
    models=[Model],
    broker_url='redis://localhost:6379/0',
    backend_url='redis://localhost:6379/0'
)

# Run the background worker in a separate terminal
worker = app.get_worker()