server/wsgi.py (54 lines of code) (raw):

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