aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAUTOMATIC1111 <16777216c@gmail.com>2023-07-15 07:44:37 +0300
committerAUTOMATIC1111 <16777216c@gmail.com>2023-07-15 07:44:37 +0300
commitb8bd8ce4cf687e9e02000387adf4d751b22a4a36 (patch)
tree40396725856ae8f3718b4f6c102adc65399a8fdb
parent95ee0cb18817df3c4fae2e7ba7063b79b0c60b9c (diff)
disable rich exception output in console for API by default, use WEBUI_RICH_EXCEPTIONS env var to enable
-rw-r--r--modules/api/api.py33
1 files changed, 18 insertions, 15 deletions
diff --git a/modules/api/api.py b/modules/api/api.py
index 11045292..2a4cd8a2 100644
--- a/modules/api/api.py
+++ b/modules/api/api.py
@@ -1,5 +1,6 @@
import base64
import io
+import os
import time
import datetime
import uvicorn
@@ -98,14 +99,16 @@ def encode_pil_to_base64(image):
def api_middleware(app: FastAPI):
- rich_available = True
+ rich_available = False
try:
- import anyio # importing just so it can be placed on silent list
- import starlette # importing just so it can be placed on silent list
- from rich.console import Console
- console = Console()
+ if os.environ.get('WEBUI_RICH_EXCEPTIONS', None) is not None:
+ import anyio # importing just so it can be placed on silent list
+ import starlette # importing just so it can be placed on silent list
+ from rich.console import Console
+ console = Console()
+ rich_available = True
except Exception:
- rich_available = False
+ pass
@app.middleware("http")
async def log_and_time(req: Request, call_next):
@@ -116,14 +119,14 @@ def api_middleware(app: FastAPI):
endpoint = req.scope.get('path', 'err')
if shared.cmd_opts.api_log and endpoint.startswith('/sdapi'):
print('API {t} {code} {prot}/{ver} {method} {endpoint} {cli} {duration}'.format(
- t = datetime.datetime.now().strftime("%Y-%m-%d %H:%M:%S.%f"),
- code = res.status_code,
- ver = req.scope.get('http_version', '0.0'),
- cli = req.scope.get('client', ('0:0.0.0', 0))[0],
- prot = req.scope.get('scheme', 'err'),
- method = req.scope.get('method', 'err'),
- endpoint = endpoint,
- duration = duration,
+ t=datetime.datetime.now().strftime("%Y-%m-%d %H:%M:%S.%f"),
+ code=res.status_code,
+ ver=req.scope.get('http_version', '0.0'),
+ cli=req.scope.get('client', ('0:0.0.0', 0))[0],
+ prot=req.scope.get('scheme', 'err'),
+ method=req.scope.get('method', 'err'),
+ endpoint=endpoint,
+ duration=duration,
))
return res
@@ -134,7 +137,7 @@ def api_middleware(app: FastAPI):
"body": vars(e).get('body', ''),
"errors": str(e),
}
- if not isinstance(e, HTTPException): # do not print backtrace on known httpexceptions
+ if not isinstance(e, HTTPException): # do not print backtrace on known httpexceptions
message = f"API error: {request.method}: {request.url} {err}"
if rich_available:
print(message)