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.
Extends the
msdss_base_api.core.API
class
- Parameters
users_api (
msdss_users_api.core.UsersAPI
or None) – Users API object to enable user authentication for models routes. IfNone
, 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. IfNone
, 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 availableModel
objects to use for creating and managing model instances. Iflist
, 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. IfNone
, a default worker will be created using parametersbroker_url
andbackend_url
.broker_url (str or None) – Link to connect to a Redis broker. Env vars will take priority - see parameter
env
. If parameterworker
is set, this will not be applied.Link to connect to a Redis backend. Env vars will take priority - see parameter
env
. If parameterworker
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()
exceptbg_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
isTrue
:<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()