29 lines
854 B
Python
29 lines
854 B
Python
from typing import Any, Dict
|
|
|
|
from gunicorn.app.wsgiapp import WSGIApplication
|
|
from uvicorn.workers import UvicornWorker as BaseUvicornWorker
|
|
|
|
|
|
class UvicornWorker(BaseUvicornWorker):
|
|
CONFIG_KWARGS: Dict[str, Any] = {"loop": "auto", "http": "auto", "lifespan": "on"}
|
|
|
|
|
|
class WSGIApplicationWrapper(WSGIApplication):
|
|
"""
|
|
Wrapper for the Flask application into a WSGI application.
|
|
"""
|
|
|
|
def __init__(self, app_uri, options=None):
|
|
self.options = options or {}
|
|
self.app_uri = app_uri
|
|
super().__init__()
|
|
|
|
def load_config(self):
|
|
config = {
|
|
key: value
|
|
for key, value in self.options.items()
|
|
if key in self.cfg.settings and value is not None # type: ignore
|
|
}
|
|
for key, value in config.items():
|
|
self.cfg.set(key.lower(), value) # type: ignore
|