blob: 7ac02e6518eb812ee8a5dfe313d58444d478dac3 [file] [log] [blame]
#
# Licensed to the Apache Software Foundation (ASF) under one
# or more contributor license agreements. See the NOTICE file
# distributed with this work for additional information
# regarding copyright ownership. The ASF licenses this file
# to you under the Apache License, Version 2.0 (the
# "License"); you may not use this file except in compliance
# with the License. You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing,
# software distributed under the License is distributed on an
# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
# KIND, either express or implied. See the License for the
# specific language governing permissions and limitations
# under the License.
#
"""
WSGI config for scorecardapp project.
This module contains the WSGI application used by Django's development server
and any production WSGI deployments. It should expose a module-level variable
named ``application``. Django's ``runserver`` and ``runfcgi`` commands discover
this application via the ``WSGI_APPLICATION`` setting.
Usually you will have the standard Django WSGI application here, but it also
might make sense to replace the whole Django WSGI application with a custom one
that later delegates to the Django one. For example, you could introduce WSGI
middleware here, or combine a Django application with an application of another
framework.
For more information, visit
https://docs.djangoproject.com/en/2.1/howto/deployment/wsgi/
"""
import logging
import os
import sys
import joblib
from django.core.wsgi import get_wsgi_application
from ml.registry import MLRegistry
from ml.classifiers import GradientBoostClassifier, MLP, RandomForestClassifier, SVC
log = logging.getLogger(__name__)
os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'server.settings')
# This application object is used by any WSGI server configured to use this
# file. This includes Django's development server, if the WSGI_APPLICATION
# setting points here.
application = get_wsgi_application()
registry = MLRegistry()
if ('runserver' in sys.argv or 'test' in sys.argv):
# create ML registry
try:
zone = "german"
registry.add_algorithms([
# Random Forest classifier
{'classifier': RandomForestClassifier(model=joblib.load(f'zoo/models/{zone}/rf_classifier.joblib'),
categorical=joblib.load(f'zoo/models/{zone}/categorical.joblib'),
label_encoders=joblib.load(f'zoo/models/{zone}/label_encoders.joblib')),
'description': "Random Forest with simple pre and post-processing",
'status': "production",
'version': "0.0.1",
'dataset': 'german',
'region': 'Germany',
'created_by': "xurror"},
# SVC classifier
{'classifier': SVC(model=joblib.load(f'zoo/models/{zone}/svc_classifier.joblib'),
categorical=joblib.load(f'zoo/models/{zone}/categorical.joblib'),
label_encoders=joblib.load(f'zoo/models/{zone}/label_encoders.joblib')),
'description': "SVC Classifier with simple pre- and post-processing",
'status': "testing",
'version': "0.0.1",
'dataset': 'german',
'region': 'Germany',
'created_by': "xurror"},
# MLP classifier
{'classifier': MLP(model=joblib.load(f'zoo/models/{zone}/mlp_classifier.joblib'),
categorical=joblib.load(f'zoo/models/{zone}/categorical.joblib'),
label_encoders=joblib.load(f'zoo/models/{zone}/label_encoders.joblib')),
'description': "MLP Classifier with simple pre- and post-processing",
'status': "testing",
'version': "0.0.1",
'dataset': 'german',
'region': 'Germany',
'created_by': "xurror"},
# Gradient Boost classifier
{'classifier': GradientBoostClassifier(model=joblib.load(f'zoo/models/{zone}/gb_classifier.joblib'),
categorical=joblib.load(f'zoo/models/{zone}/categorical.joblib'),
label_encoders=joblib.load(f'zoo/models/{zone}/label_encoders.joblib')),
'description': "Gradient Boost CLassifier with simple pre- and post-processing",
'status': "testing",
'version': "0.0.1",
'dataset': 'german',
'region': 'Germany',
'created_by': "xurror"}])
except Exception as e:
log.debug(f"Exception while loading the algorithms to the registry; {str(e)}")
exit()