# | |
# 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() |