mirror of
https://github.com/clearml/clearml
synced 2025-03-03 18:52:12 +00:00
add api.http.default_method to help with GCP load balancers dropping GET requests (use PUT instead)
This commit is contained in:
parent
721569bb77
commit
3e5d50e15d
@ -46,6 +46,9 @@
|
|||||||
|
|
||||||
pool_maxsize: 512
|
pool_maxsize: 512
|
||||||
pool_connections: 512
|
pool_connections: 512
|
||||||
|
|
||||||
|
# Override the default http method, use "put" if working behind GCP load balancer (default: "get")
|
||||||
|
# default_method: "get"
|
||||||
}
|
}
|
||||||
|
|
||||||
auth {
|
auth {
|
||||||
|
@ -8,13 +8,14 @@ from .datamodel import DataModel
|
|||||||
from .defs import ENV_API_DEFAULT_REQ_METHOD
|
from .defs import ENV_API_DEFAULT_REQ_METHOD
|
||||||
|
|
||||||
|
|
||||||
if ENV_API_DEFAULT_REQ_METHOD.exists() and ENV_API_DEFAULT_REQ_METHOD.get().upper() not in ("GET", "POST"):
|
if ENV_API_DEFAULT_REQ_METHOD.exists() and ENV_API_DEFAULT_REQ_METHOD.get().upper() not in ("GET", "POST", "PUT"):
|
||||||
raise ValueError(
|
raise ValueError(
|
||||||
"CLEARML_API_DEFAULT_REQ_METHOD environment variable must be 'get' or 'post' (any case is allowed)."
|
"CLEARML_API_DEFAULT_REQ_METHOD environment variable must be 'get' or 'post' (any case is allowed)."
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
class Request(ApiModel):
|
class Request(ApiModel):
|
||||||
|
def_method = ENV_API_DEFAULT_REQ_METHOD.get(default="get")
|
||||||
_method = ENV_API_DEFAULT_REQ_METHOD.get(default="get")
|
_method = ENV_API_DEFAULT_REQ_METHOD.get(default="get")
|
||||||
|
|
||||||
def __init__(self, **kwargs):
|
def __init__(self, **kwargs):
|
||||||
|
@ -25,8 +25,7 @@ from .defs import (
|
|||||||
ENV_DISABLE_VAULT_SUPPORT,
|
ENV_DISABLE_VAULT_SUPPORT,
|
||||||
ENV_ENABLE_ENV_CONFIG_SECTION,
|
ENV_ENABLE_ENV_CONFIG_SECTION,
|
||||||
ENV_ENABLE_FILES_CONFIG_SECTION,
|
ENV_ENABLE_FILES_CONFIG_SECTION,
|
||||||
ENV_API_DEFAULT_REQ_METHOD,
|
ENV_API_EXTRA_RETRY_CODES, ENV_API_DEFAULT_REQ_METHOD,
|
||||||
ENV_API_EXTRA_RETRY_CODES,
|
|
||||||
)
|
)
|
||||||
from .request import Request, BatchRequest # noqa: F401
|
from .request import Request, BatchRequest # noqa: F401
|
||||||
from .token_manager import TokenManager
|
from .token_manager import TokenManager
|
||||||
@ -142,6 +141,15 @@ class Session(TokenManager):
|
|||||||
self._logger = logger
|
self._logger = logger
|
||||||
self.__auth_token = None
|
self.__auth_token = None
|
||||||
|
|
||||||
|
if not ENV_API_DEFAULT_REQ_METHOD.get(default=None) and self.config.get("api.http.default_method", None):
|
||||||
|
def_method = str(self.config.get("api.http.default_method", None)).strip()
|
||||||
|
if def_method.upper() not in ("GET", "POST", "PUT"):
|
||||||
|
raise ValueError(
|
||||||
|
"api.http.default_method variable must be 'get' or 'post' (any case is allowed)."
|
||||||
|
)
|
||||||
|
Request.def_method = def_method
|
||||||
|
Request._method = Request.def_method
|
||||||
|
|
||||||
if ENV_AUTH_TOKEN.get():
|
if ENV_AUTH_TOKEN.get():
|
||||||
self.__access_key = self.__secret_key = None
|
self.__access_key = self.__secret_key = None
|
||||||
self.__auth_token = ENV_AUTH_TOKEN.get()
|
self.__auth_token = ENV_AUTH_TOKEN.get()
|
||||||
@ -313,7 +321,7 @@ class Session(TokenManager):
|
|||||||
service,
|
service,
|
||||||
action,
|
action,
|
||||||
version=None,
|
version=None,
|
||||||
method="get",
|
method=Request.def_method,
|
||||||
headers=None,
|
headers=None,
|
||||||
auth=None,
|
auth=None,
|
||||||
data=None,
|
data=None,
|
||||||
@ -402,7 +410,7 @@ class Session(TokenManager):
|
|||||||
service,
|
service,
|
||||||
action,
|
action,
|
||||||
version=None,
|
version=None,
|
||||||
method="get",
|
method=Request.def_method,
|
||||||
headers=None,
|
headers=None,
|
||||||
data=None,
|
data=None,
|
||||||
json=None,
|
json=None,
|
||||||
@ -445,7 +453,7 @@ class Session(TokenManager):
|
|||||||
headers=None,
|
headers=None,
|
||||||
data=None,
|
data=None,
|
||||||
json=None,
|
json=None,
|
||||||
method="get",
|
method=Request.def_method,
|
||||||
):
|
):
|
||||||
"""
|
"""
|
||||||
Send a raw batch API request. Batch requests always use application/json-lines content type.
|
Send a raw batch API request. Batch requests always use application/json-lines content type.
|
||||||
@ -734,7 +742,7 @@ class Session(TokenManager):
|
|||||||
try:
|
try:
|
||||||
data = {"expiration_sec": exp} if exp else {}
|
data = {"expiration_sec": exp} if exp else {}
|
||||||
res = self._send_request(
|
res = self._send_request(
|
||||||
method=ENV_API_DEFAULT_REQ_METHOD.get(default="get"),
|
method=Request.def_method,
|
||||||
service="auth",
|
service="auth",
|
||||||
action="login",
|
action="login",
|
||||||
auth=auth,
|
auth=auth,
|
||||||
|
Loading…
Reference in New Issue
Block a user