handlers

ModelsHandler

class msdss_models_api.handlers.ModelsHandler[source]

Class to handle model operations.

Author

Richard Wen <rrwen.dev@gmail.com>

Example

import tempfile
from msdss_models_api.models import Model
from msdss_models_api.managers import ModelsManager
from msdss_models_api.handlers import ModelsHandler

with tempfile.TemporaryDirectory() as folder_path:

    # Setup available models
    models = [Model]

    # Create handler
    handler = ModelsHandler()

    # Create manager
    models_manager = ModelsManager(models, folder=folder_path, handler=handler)

    # Check if model and instance name available
    # Should not raise exceptions
    handler.handle_create('temp_model', 'Model', models_manager.instances, models_manager.models)

    # Check if instance name available
    # Should not raise exceptions
    handler.handle_write('temp_model', models_manager.instances)

    # Create model instance
    models_manager.create('temp_model', 'Model')

    # Check if instance exists to read
    # Should not raise exceptions
    handler.handle_read('temp_model', models_manager.instances)

handle_create

ModelsHandler.handle_create(name, model, instances, models)[source]

Handle model creation operation.

Parameters
  • name (str) – Name of the model instance.

  • model (str) – Name of the model to create.

  • models (dict(msdss_models_api.models.Model)) –

    Dictionary of available models from parameter models, where:

    • Each key is the class name

    • Each value is the class itself

  • instances (dict(msdss_models_api.models.Model)) – Dictionary of loaded model instances.

Author

Richard Wen <rrwen.dev@gmail.com>

Example

import tempfile
from msdss_models_api.models import Model
from msdss_models_api.managers import ModelsManager
from msdss_models_api.handlers import ModelsHandler

with tempfile.TemporaryDirectory() as folder_path:

    # Setup available models
    models = [Model]

    # Create handler
    handler = ModelsHandler()

    # Create manager
    models_manager = ModelsManager(models, folder=folder_path, handler=handler)

    # Check if model and instance name available
    # Should not raise exceptions
    handler.handle_create('temp_model', 'Model', models_manager.instances, models_manager.models)

handle_input

ModelsHandler.handle_input(name, instances)[source]

Handle model input operation.

Parameters

Author

Richard Wen <rrwen.dev@gmail.com>

Example

import tempfile
from msdss_models_api.models import Model
from msdss_models_api.managers import ModelsManager
from msdss_models_api.handlers import ModelsHandler

with tempfile.TemporaryDirectory() as folder_path:

    # Setup available models
    models = [Model]

    # Create handler
    handler = ModelsHandler()

    # Create manager
    models_manager = ModelsManager(models, folder=folder_path, handler=handler)

    # Create model instance
    models_manager.create('temp_model', 'Model')

    # Check if instance exists to read
    # Should not raise exceptions
    handler.handle_input('temp_model', models_manager.instances)

handle_output

ModelsHandler.handle_output(name, instances)[source]

Handle model output operation.

Parameters

Author

Richard Wen <rrwen.dev@gmail.com>

Example

import tempfile
from msdss_models_api.models import Model
from msdss_models_api.managers import ModelsManager
from msdss_models_api.handlers import ModelsHandler

with tempfile.TemporaryDirectory() as folder_path:

    # Setup available models
    models = [Model]

    # Create handler
    handler = ModelsHandler()

    # Create manager
    models_manager = ModelsManager(models, folder=folder_path, handler=handler)

    # Create model instance
    models_manager.create('temp_model', 'Model')

    # Check if instance exists to read
    # Should not raise exceptions
    handler.handle_output('temp_model', models_manager.instances)

handle_read

ModelsHandler.handle_read(name, instances)[source]

Handle model read operation.

Parameters

Author

Richard Wen <rrwen.dev@gmail.com>

Example

import tempfile
from msdss_models_api.models import Model
from msdss_models_api.managers import ModelsManager
from msdss_models_api.handlers import ModelsHandler

with tempfile.TemporaryDirectory() as folder_path:

    # Setup available models
    models = [Model]

    # Create handler
    handler = ModelsHandler()

    # Create manager
    models_manager = ModelsManager(models, folder=folder_path, handler=handler)

    # Create model instance
    models_manager.create('temp_model', 'Model')

    # Check if instance exists to read
    # Should not raise exceptions
    handler.handle_read('temp_model', models_manager.instances)

handle_update

ModelsHandler.handle_update(name, instances)[source]

Handle model update operation.

Parameters

Author

Richard Wen <rrwen.dev@gmail.com>

Example

import tempfile
from msdss_models_api.models import Model
from msdss_models_api.managers import ModelsManager
from msdss_models_api.handlers import ModelsHandler

with tempfile.TemporaryDirectory() as folder_path:

    # Setup available models
    models = [Model]

    # Create handler
    handler = ModelsHandler()

    # Create manager
    models_manager = ModelsManager(models, folder=folder_path, handler=handler)

    # Create model instance
    models_manager.create('temp_model', 'Model')

    # Check if instance exists to read
    # Should not raise exceptions
    handler.handle_update('temp_model', models_manager.instances)

handle_write

ModelsHandler.handle_write(name, instances)[source]

Handle model write operation.

Parameters

Author

Richard Wen <rrwen.dev@gmail.com>

Example

import tempfile
from msdss_models_api.models import Model
from msdss_models_api.managers import ModelsManager
from msdss_models_api.handlers import ModelsHandler

with tempfile.TemporaryDirectory() as folder_path:

    # Setup available models
    models = [Model]

    # Create handler
    handler = ModelsHandler()

    # Create manager
    models_manager = ModelsManager(models, folder=folder_path, handler=handler)

    # Check if instance name available
    # Should not raise exceptions
    handler.handle_write('temp_model', models_manager.instances)

ModelsBackgroundHandler

class msdss_models_api.handlers.ModelsBackgroundHandler[source]

Class to handle model background operations.

Author

Richard Wen <rrwen.dev@gmail.com>

Example

import tempfile
from celery import Celery
from msdss_models_api.models import Model
from msdss_models_api.managers import *
from msdss_models_api.handlers import *

with tempfile.TemporaryDirectory() as folder_path:

    # Setup available models
    models = [Model]

    # Create handler
    handler = ModelsBackgroundHandler()

    # Create manager
    models_manager = ModelsManager(models, folder=folder_path, handler=handler)

    # Create bg manager
    worker = Celery(broker='redis://localhost:6379/0', backend='redis://localhost:6379/0') # rabbitmq
    bg_manager = ModelsBackgroundManager(worker, models_manager)

    # Create model instance
    models_manager.create('temp_model', 'Model')

    # Initialize a model instance with inputs as a background process
    train_data = [
        {'col_a': 1, 'col_b': 'a'},
        {'col_a': 2, 'col_b': 'b'}
    ]
    bg_manager.input('temp_model', train_data)

    # Check if instance is processing
    # Should not raise exceptions
    handler.handle_processing('temp_model', bg_manager.states)

    # Check if state exists
    # Should not raise exceptions
    handler.handle_read_state('temp_model', bg_manager.states)

handle_cancel

ModelsBackgroundHandler.handle_cancel(name, states)[source]

Handle model background task cancellation.

Parameters
  • name (str) – Name of the model instance.

  • states (dict) –

    Dictionary of processing states for each instance, consisting of the following keys:

    • task (str): the action that the process is performing - one of: INPUT, UPDATE, LOAD

    • result (celery:celery.result.AsyncResult): celery async object for getting states, ids, etc (see celery.result)

    • started_at (datetime.datetime): datetime object for when the task was started

Author

Richard Wen <rrwen.dev@gmail.com>

Example

import tempfile
from celery import Celery
from msdss_models_api.models import Model
from msdss_models_api.managers import *
from msdss_models_api.handlers import *

with tempfile.TemporaryDirectory() as folder_path:

    # Setup available models
    models = [Model]

    # Create handler
    handler = ModelsBackgroundHandler()

    # Create manager
    models_manager = ModelsManager(models, folder=folder_path, handler=handler)

    # Create bg manager
    worker = Celery(broker='redis://localhost:6379/0', backend='redis://localhost:6379/0') # rabbitmq
    bg_manager = ModelsBackgroundManager(worker, models_manager)

    # Create model instance
    models_manager.create('temp_model', 'Model')

    # Initialize a model instance with inputs as a background process
    train_data = [
        {'col_a': 1, 'col_b': 'a'},
        {'col_a': 2, 'col_b': 'b'}
    ]
    bg_manager.input('temp_model', train_data)

    # Check if instance processing can be cancelled
    # Should raise an exception
    handler.handle_cancel('temp_model', bg_manager.states)

handle_processing

ModelsBackgroundHandler.handle_processing(name, states)[source]

Handle model background task processing.

Parameters
  • name (str) – Name of the model instance.

  • states (dict) –

    Dictionary of processing states for each instance, consisting of the following keys:

    • task (str): the action that the process is performing - one of: INPUT, UPDATE, LOAD

    • result (celery:celery.result.AsyncResult): celery async object for getting states, ids, etc (see celery.result)

    • started_at (datetime.datetime): datetime object for when the task was started

Author

Richard Wen <rrwen.dev@gmail.com>

Example

import tempfile
from celery import Celery
from msdss_models_api.models import Model
from msdss_models_api.managers import *
from msdss_models_api.handlers import *

with tempfile.TemporaryDirectory() as folder_path:

    # Setup available models
    models = [Model]

    # Create handler
    handler = ModelsBackgroundHandler()

    # Create manager
    models_manager = ModelsManager(models, folder=folder_path, handler=handler)

    # Create bg manager
    worker = Celery(broker='redis://localhost:6379/0', backend='redis://localhost:6379/0') # rabbitmq
    bg_manager = ModelsBackgroundManager(worker, models_manager)

    # Create model instance
    models_manager.create('temp_model', 'Model')

    # Initialize a model instance with inputs as a background process
    train_data = [
        {'col_a': 1, 'col_b': 'a'},
        {'col_a': 2, 'col_b': 'b'}
    ]
    bg_manager.input('temp_model', train_data)

    # Check if instance is processing
    # Should not raise exceptions
    handler.handle_processing('temp_model', bg_manager.states)