mirror of
https://github.com/clearml/clearml-server
synced 2025-03-03 18:54:20 +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.service_repo import ServiceRepo
|
||||||
from apiserver.sync import distributed_lock
|
from apiserver.sync import distributed_lock
|
||||||
from apiserver.updates import check_updates_thread
|
from apiserver.updates import check_updates_thread
|
||||||
|
from apiserver.utilities.env import get_bool
|
||||||
from apiserver.utilities.threads_manager import ThreadsManager
|
from apiserver.utilities.threads_manager import ThreadsManager
|
||||||
|
|
||||||
log = config.logger(__file__)
|
log = config.logger(__file__)
|
||||||
@ -46,9 +47,12 @@ class AppSequence:
|
|||||||
def _attach_request_handlers(self, request_handlers: RequestHandlers):
|
def _attach_request_handlers(self, request_handlers: RequestHandlers):
|
||||||
self.app.before_first_request(request_handlers.before_app_first_request)
|
self.app.before_first_request(request_handlers.before_app_first_request)
|
||||||
self.app.before_request(request_handlers.before_request)
|
self.app.before_request(request_handlers.before_request)
|
||||||
|
self.app.after_request(request_handlers.after_request)
|
||||||
|
|
||||||
def _configure(self):
|
def _configure(self):
|
||||||
CORS(self.app, **config.get("apiserver.cors"))
|
CORS(self.app, **config.get("apiserver.cors"))
|
||||||
|
|
||||||
|
if get_bool("CLEARML_COMPRESS_RESP", default=True):
|
||||||
Compress(self.app)
|
Compress(self.app)
|
||||||
|
|
||||||
self.app.config["SECRET_KEY"] = config.get(
|
self.app.config["SECRET_KEY"] = config.get(
|
||||||
|
@ -18,6 +18,7 @@ log = config.logger(__file__)
|
|||||||
|
|
||||||
class RequestHandlers:
|
class RequestHandlers:
|
||||||
_request_strip_prefix = config.get("apiserver.request.strip_prefix", None)
|
_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):
|
def before_app_first_request(self):
|
||||||
pass
|
pass
|
||||||
@ -28,6 +29,9 @@ class RequestHandlers:
|
|||||||
if "/static/" in request.path:
|
if "/static/" in request.path:
|
||||||
return
|
return
|
||||||
|
|
||||||
|
if request.content_encoding:
|
||||||
|
return f"Content encoding is not supported ({request.content_encoding})", 415
|
||||||
|
|
||||||
try:
|
try:
|
||||||
call = self._create_api_call(request)
|
call = self._create_api_call(request)
|
||||||
load_data_callback = partial(self._load_call_data, req=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}")
|
log.exception(f"Failed processing request {request.url}: {ex}")
|
||||||
return f"Failed processing request {request.url}", 500
|
return f"Failed processing request {request.url}", 500
|
||||||
|
|
||||||
|
def after_request(self, response):
|
||||||
|
response.headers["server"] = self._server_header
|
||||||
|
return response
|
||||||
|
|
||||||
@staticmethod
|
@staticmethod
|
||||||
def _apply_multi_dict(body: dict, md: ImmutableMultiDict):
|
def _apply_multi_dict(body: dict, md: ImmutableMultiDict):
|
||||||
def convert_value(v: str):
|
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