diff --git a/src/api/__init__.py b/src/api/__init__.py new file mode 100644 index 0000000..f937610 --- /dev/null +++ b/src/api/__init__.py @@ -0,0 +1,10 @@ +from flask_restx import Api + + +api = Api( + version='1.0', + title='Meme Search Engine', + description='A CLIP based meme search engine', + doc='/doc/' + ) + diff --git a/src/app.py b/src/app.py new file mode 100755 index 0000000..68d0ca9 --- /dev/null +++ b/src/app.py @@ -0,0 +1,17 @@ +#!/usr/bin/python3 +# Entry point + +from flask import Flask +from api import api +from config import config, setLogLevel +import os + +setLogLevel() + +port = config["server.port"] +host = config["server.host"] + +app = Flask(__name__) +api.init_app(app) + +app.run(host=host, port=port) diff --git a/src/config.py b/src/config.py new file mode 100644 index 0000000..ca4adf0 --- /dev/null +++ b/src/config.py @@ -0,0 +1,27 @@ +# Load configurationa YAML + +import envyaml +import os +import logging + +config = envyaml.envyaml(os.environ.get('CONFIG_PATH', 'config.yaml')) + +def setLogLevel(): + """ + Set the logging level based on the config + """ + + logLevel = config["app.log"] + if logLevel == "DEBUG": + logging.basicConfig(level=logging.DEBUG) + elif logLevel == "INFO": + logging.basicConfig(level=logging.INFO) + elif logLevel == "WARNING": + logging.basicConfig(level=logging.WARNING) + elif logLevel == "ERROR": + logging.basicConfig(level=logging.ERROR) + elif logLevel == "CRITICAL": + logging.basicConfig(level=logging.CRITICAL) + + logging.info("Logging level set to %s", logLevel) + diff --git a/src/config.yaml b/src/config.yaml new file mode 100644 index 0000000..e5adc7a --- /dev/null +++ b/src/config.yaml @@ -0,0 +1,5 @@ +app: + port: 5000 + host: "0.0.0.0" + log: "debug" + diff --git a/src/requirements.txt b/src/requirements.txt new file mode 100644 index 0000000..39c106f --- /dev/null +++ b/src/requirements.txt @@ -0,0 +1,16 @@ +aniso8601==9.0.1 +attrs==23.1.0 +blinker==1.6.2 +click==8.1.3 +envyaml==1.10.211231 +Flask==2.3.2 +flask-restx==1.1.0 +huggingface==0.0.1 +itsdangerous==2.1.2 +Jinja2==3.1.2 +jsonschema==4.17.3 +MarkupSafe==2.1.2 +pyrsistent==0.19.3 +pytz==2023.3 +PyYAML==6.0 +Werkzeug==2.3.3