CoolFace
Apppublic

diegokauer/segmentation-backend

sourceHugging Faceapache-2.0updated 3y agoView on Hugging Face
0likes
_wsgi.py120 linesDownload Raw Back to root
1import os2import argparse3import logging4import logging.config5import json6 7from creds import get_credentials8 9logging.config.dictConfig({10  "version": 1,11  "formatters": {12    "standard": {13      "format": "[%(asctime)s] [%(levelname)s] [%(name)s::%(funcName)s::%(lineno)d] %(message)s"14    }15  },16  "handlers": {17    "console": {18      "class": "logging.StreamHandler",19      "level": os.getenv('LOG_LEVEL', 'INFO'),20      "stream": "ext://sys.stdout",21      "formatter": "standard"22    }23  },24  "root": {25    "level": os.getenv('LOG_LEVEL', 'INFO'),26    "handlers": [27      "console"28    ],29    "propagate": True30  }31})32 33from label_studio_ml.api import init_app34from model import Model35 36_DEFAULT_CONFIG_PATH = os.path.join(os.path.dirname(__file__), 'config.json')37 38 39def get_kwargs_from_config(config_path=_DEFAULT_CONFIG_PATH):40    if not os.path.exists(config_path):41        return dict()42    with open(config_path) as f:43        config = json.load(f)44    assert isinstance(config, dict)45    return config46 47 48if __name__ == "__main__":49    parser = argparse.ArgumentParser(description='Label studio')50    parser.add_argument(51        '-p', '--port', dest='port', type=int, default=9090,52        help='Server port')53    parser.add_argument(54        '--host', dest='host', type=str, default='0.0.0.0',55        help='Server host')56    parser.add_argument(57        '--kwargs', '--with', dest='kwargs', metavar='KEY=VAL', nargs='+', type=lambda kv: kv.split('='),58        help='Additional LabelStudioMLBase model initialization kwargs')59    parser.add_argument(60        '-d', '--debug', dest='debug', action='store_true',61        help='Switch debug mode')62    parser.add_argument(63        '--log-level', dest='log_level', choices=['DEBUG', 'INFO', 'WARNING', 'ERROR'], default=None,64        help='Logging level')65    parser.add_argument(66        '--model-dir', dest='model_dir', default=os.path.dirname(__file__),67        help='Directory where models are stored (relative to the project directory)')68    parser.add_argument(69        '--check', dest='check', action='store_true',70        help='Validate model instance before launching server')71 72    args = parser.parse_args()73 74    # setup logging level75    if args.log_level:76        logging.root.setLevel(args.log_level)77 78    def isfloat(value):79        try:80            float(value)81            return True82        except ValueError:83            return False84 85    def parse_kwargs():86        param = dict()87        for k, v in args.kwargs:88            if v.isdigit():89                param[k] = int(v)90            elif v == 'True' or v == 'true':91                param[k] = True92            elif v == 'False' or v == 'False':93                param[k] = False94            elif isfloat(v):95                param[k] = float(v)96            else:97                param[k] = v98        return param99 100    kwargs = get_kwargs_from_config()101 102    if args.kwargs:103        kwargs.update(parse_kwargs())104 105    if args.check:106        print('Check "' + Model.__name__ + '" instance creation..')107        model = Model(**kwargs)108 109    app = init_app(model_class=Model)110 111    # pass112    os.environ["GOOGLE_APPLICATION_CREDENTIALS"]= get_credentials()113    print("credentials set")114 115    app.run(host=args.host, port=args.port, debug=args.debug)116 117else:118    # for uWSGI use119    app = init_app(model_class=Model)120