Call plugin setup function

This commit is contained in:
Csaba 2023-12-07 15:57:38 +01:00
parent c7eafd9472
commit 19e8b54a32
3 changed files with 56 additions and 9 deletions

1
.gitignore vendored
View file

@ -160,4 +160,5 @@ cython_debug/
# option (not recommended) you can uncomment the following to ignore the entire idea folder.
#.idea/
.vscode
secrets

View file

@ -16,9 +16,6 @@ from fastapi import FastAPI
# https://pydantic-docs.helpmanual.io/usage/settings/
# from app.views import home
# from prometheus_fastapi_instrumentator import Instrumentator
# from prometheus_fastapi_instrumentator import metrics as pfi_metrics
logger.info("Hello Amarillo!")
app = FastAPI(title="Amarillo - The Carpooling Intermediary",
@ -86,10 +83,37 @@ app = FastAPI(title="Amarillo - The Carpooling Intermediary",
# instrumentator.instrument(app)
# def configure():
# configure_admin_token()
# configure_services()
# configure_routing()
import importlib
import pkgutil
import amarillo.plugins # FIXME this namespace does not exist if there are 0 plugins installed
def iter_namespace(ns_pkg):
# Source: https://packaging.python.org/guides/creating-and-discovering-plugins/
return pkgutil.iter_modules(ns_pkg.__path__, ns_pkg.__name__ + ".")
def load_plugins():
discovered_plugins = {
name: importlib.import_module(name)
for finder, name, ispkg
in iter_namespace(amarillo.plugins)
}
print(f"Discovered plugins: {list(discovered_plugins.keys())}")
for name, module in discovered_plugins.items():
if hasattr(module, "setup"):
print(f"Running setup function for {name}")
module.setup(app)
else: print(f"Did not find setup function for {name}")
def configure():
# configure_admin_token()
# configure_services()
# configure_routing()
load_plugins()
# def configure_routing():
@ -100,8 +124,8 @@ app = FastAPI(title="Amarillo - The Carpooling Intermediary",
if __name__ == "__main__":
# configure()
configure()
uvicorn.run(app, host="0.0.0.0", port=8000)
else:
# configure()
configure()
pass

22
logging.conf Normal file
View file

@ -0,0 +1,22 @@
[loggers]
keys=root
[handlers]
keys=consoleHandler
[formatters]
keys=simpleFormatter
[logger_root]
level=INFO
handlers=consoleHandler
propagate=yes
[handler_consoleHandler]
class=StreamHandler
level=DEBUG
formatter=simpleFormatter
args=(sys.stdout,)
[formatter_simpleFormatter]
format=%(asctime)s - %(name)s - %(levelname)s - %(message)s