mirror of
https://github.com/clearml/clearml-server
synced 2025-03-03 10:43:10 +00:00
Support disabling response compression
Return fixed server header
This commit is contained in:
parent
e537651f29
commit
02933a9c93
@ -25,6 +25,7 @@ from apiserver.server_init.request_handlers import RequestHandlers
|
||||
from apiserver.service_repo import ServiceRepo
|
||||
from apiserver.sync import distributed_lock
|
||||
from apiserver.updates import check_updates_thread
|
||||
from apiserver.utilities.env import get_bool
|
||||
from apiserver.utilities.threads_manager import ThreadsManager
|
||||
|
||||
log = config.logger(__file__)
|
||||
@ -46,9 +47,12 @@ class AppSequence:
|
||||
def _attach_request_handlers(self, request_handlers: RequestHandlers):
|
||||
self.app.before_first_request(request_handlers.before_app_first_request)
|
||||
self.app.before_request(request_handlers.before_request)
|
||||
self.app.after_request(request_handlers.after_request)
|
||||
|
||||
def _configure(self):
|
||||
CORS(self.app, **config.get("apiserver.cors"))
|
||||
|
||||
if get_bool("CLEARML_COMPRESS_RESP", default=True):
|
||||
Compress(self.app)
|
||||
|
||||
self.app.config["SECRET_KEY"] = config.get(
|
||||
|
@ -18,6 +18,7 @@ log = config.logger(__file__)
|
||||
|
||||
class RequestHandlers:
|
||||
_request_strip_prefix = config.get("apiserver.request.strip_prefix", None)
|
||||
_server_header = config.get("apiserver.response.headers.server", "clearml")
|
||||
|
||||
def before_app_first_request(self):
|
||||
pass
|
||||
@ -28,6 +29,9 @@ class RequestHandlers:
|
||||
if "/static/" in request.path:
|
||||
return
|
||||
|
||||
if request.content_encoding:
|
||||
return f"Content encoding is not supported ({request.content_encoding})", 415
|
||||
|
||||
try:
|
||||
call = self._create_api_call(request)
|
||||
load_data_callback = partial(self._load_call_data, req=request)
|
||||
@ -81,6 +85,10 @@ class RequestHandlers:
|
||||
log.exception(f"Failed processing request {request.url}: {ex}")
|
||||
return f"Failed processing request {request.url}", 500
|
||||
|
||||
def after_request(self, response):
|
||||
response.headers["server"] = self._server_header
|
||||
return response
|
||||
|
||||
@staticmethod
|
||||
def _apply_multi_dict(body: dict, md: ImmutableMultiDict):
|
||||
def convert_value(v: str):
|
||||
|
14
apiserver/utilities/env.py
Normal file
14
apiserver/utilities/env.py
Normal file
@ -0,0 +1,14 @@
|
||||
from distutils.util import strtobool
|
||||
from os import getenv
|
||||
from typing import Optional
|
||||
|
||||
|
||||
def get_bool(*keys: str, default: bool = None) -> Optional[bool]:
|
||||
try:
|
||||
value = next(env for env in (getenv(key) for key in keys) if env is not None)
|
||||
except StopIteration:
|
||||
return default
|
||||
try:
|
||||
return bool(strtobool(value))
|
||||
except ValueError:
|
||||
return bool(value)
|
Loading…
Reference in New Issue
Block a user