import os from os.path import isdir DEFAULT_MODULE_LOCATIONS = [("app.main", "/app/app/main.py"), ("main", "/app/main.py")] DEFAULT_GUNICORN_CONF = [(None, "/app/gunicorn_config.py"), (None, "/app/startup/gunicorn_config.py")] def get_location(pot): for i in pot: if not isdir(i[1]): continue # Last record will be "defauilt" return i[0] if i[0] else i[1] if __name__ == "__main__": MODULE_NAME = os.getenv("MODULE_LOCATION", get_location(DEFAULT_MODULE_LOCATIONS)) VARIABLE_NAME = os.getenv("VARIABLE_NAME", "app") APP_MODULE = os.getenv("APP_MODULE", f"{MODULE_NAME}:{VARIABLE_NAME}") GUNICORN_CONF = os.getenv("GUNICORN_CONF", get_location(DEFAULT_GUNICORN_CONF)) OPTIONS = [ "--preload", "-k", "uvicorn.workers.UvicornWorker", "-c", f"{GUNICORN_CONF} {APP_MODULE}" ] # Set envs os.putenv("VARIABLE_NAME", VARIABLE_NAME) os.putenv("APP_MODULE", APP_MODULE) os.putenv("GUNICORN_CONF", GUNICORN_CONF) os.system(f"gunicorn -k uvicorn.workers.UvicornWorker -c {GUNICORN_CONF} {APP_MODULE}")