delay: delay_on_error only for 5xx, auth_delay for 401 in case login/user is missing

This commit is contained in:
Peter Bieringer
2026-03-31 08:33:44 +02:00
parent 87cd663914
commit 3ab7e2049f
4 changed files with 17 additions and 13 deletions

View File

@@ -838,9 +838,9 @@ Default: `8`
_(>= 3.7.0)_
Base delay in case of error response (seconds)
Base delay in case of error 5xx response (seconds)
Default: `0.01`
Default: `1`
##### max_content_length

4
config
View File

@@ -21,8 +21,8 @@
# Max parallel connections
#max_connections = 8
# Base delay in case of error response (seconds)
#delay_on_error = 0.01
# Base delay in case of error 5xx response (seconds)
#delay_on_error = 1
# Max size of request body (bytes), default: 100 Mbyte
# In case of using a reverse proxy in front of check also there related option

View File

@@ -311,14 +311,18 @@ class Application(ApplicationPartDelete, ApplicationPartHead,
else:
flags_text = ""
# delay on error
if status >= 400:
delay: float = 0.0
if status == 401 and (not login or user):
# delay for required but missing authentication
if self._auth_delay > 0:
delay = self._auth_delay * (0.5 + random.random())
if status >= 500 and status <= 599:
if self._delay_on_error > 0:
random_delay = self._delay_on_error * (1 + random.random())
if status >= 500:
random_delay = 2 * random_delay
if logger.isEnabledFor(logging.DEBUG):
logger.debug("Response delay triggered by result code: %d -> %0.3f seconds", status, random_delay)
time.sleep(random_delay)
delay = self._delay_on_error
if delay > 0:
if logger.isEnabledFor(logging.DEBUG):
logger.debug("Response delay triggered by result code: %d -> %0.3f seconds", status, delay)
time.sleep(delay)
if answer is not None:
logger.info("%s response status for %r%s in %.3f seconds %s %s bytes%s: %s",
request_method, unsafe_path, depthinfo,

View File

@@ -172,8 +172,8 @@ DEFAULT_CONFIG_SCHEMA: types.CONFIG_SCHEMA = OrderedDict([
"help": "maximum size of request body in bytes (default: 100 Mbyte)",
"type": positive_int}),
("delay_on_error", {
"value": "0.01",
"help": "base delay in case of error response (seconds)",
"value": "1",
"help": "base delay in case of error 5xx response (seconds)",
"type": positive_float}),
("max_resource_size", {
"value": "10000000",