Spaces:
Running
Running
Repeat when connection to check significance server is timed out
Browse files
server.py
CHANGED
|
@@ -20,6 +20,7 @@ from collections import namedtuple
|
|
| 20 |
from xml.sax.saxutils import escape as xmlEscape, quoteattr as xmlQuoteAttr
|
| 21 |
from threading import Lock
|
| 22 |
|
|
|
|
| 23 |
import gradio as gr
|
| 24 |
import pandas as pd
|
| 25 |
from huggingface_hub import HfApi, snapshot_download
|
|
@@ -72,7 +73,42 @@ def check_significance_is_reachable():
|
|
| 72 |
return False
|
| 73 |
return True
|
| 74 |
|
| 75 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 76 |
url = 'https://czechllm.fit.vutbr.cz/benczechmark-leaderboard/compare_significance/'
|
| 77 |
|
| 78 |
# prepare and send request
|
|
@@ -84,7 +120,10 @@ def check_significance_send_task(model_a_path, model_b_path):
|
|
| 84 |
'model_a': model_a_fp,
|
| 85 |
'model_b': model_b_fp,
|
| 86 |
}
|
| 87 |
-
response =
|
|
|
|
|
|
|
|
|
|
| 88 |
|
| 89 |
# check response
|
| 90 |
if response.status_code == 202:
|
|
@@ -97,9 +136,12 @@ def check_significance_send_task(model_a_path, model_b_path):
|
|
| 97 |
|
| 98 |
return result_url
|
| 99 |
|
| 100 |
-
def check_significance_wait_for_result(result_url):
|
| 101 |
while True:
|
| 102 |
-
response =
|
|
|
|
|
|
|
|
|
|
| 103 |
if response.status_code == 200:
|
| 104 |
result = response.json()
|
| 105 |
break
|
|
|
|
| 20 |
from xml.sax.saxutils import escape as xmlEscape, quoteattr as xmlQuoteAttr
|
| 21 |
from threading import Lock
|
| 22 |
|
| 23 |
+
import regex as re
|
| 24 |
import gradio as gr
|
| 25 |
import pandas as pd
|
| 26 |
from huggingface_hub import HfApi, snapshot_download
|
|
|
|
| 73 |
return False
|
| 74 |
return True
|
| 75 |
|
| 76 |
+
REGEX_CONNECT_TIMEOUT_ERROR = re.compile(r"""ConnectTimeoutError\(.*'(.*timed out.*)'""")
|
| 77 |
+
|
| 78 |
+
def get_timeout_error_msg(exception):
|
| 79 |
+
e = exception
|
| 80 |
+
|
| 81 |
+
if isinstance(e, requests.exceptions.ConnectTimeout):
|
| 82 |
+
error_msg = REGEX_CONNECT_TIMEOUT_ERROR.search(str(e))
|
| 83 |
+
if error_msg:
|
| 84 |
+
error_msg = error_msg.group(1)
|
| 85 |
+
else:
|
| 86 |
+
error_msg = str(e).rsplit(":", 1)[-1].strip()
|
| 87 |
+
else:
|
| 88 |
+
error_msg = str(e).rsplit(":", 1)[-1].strip()
|
| 89 |
+
|
| 90 |
+
return error_msg
|
| 91 |
+
|
| 92 |
+
def check_significance_repeat_on_conn_timeout(repeat, fn, *args, **kwargs):
|
| 93 |
+
while True:
|
| 94 |
+
try:
|
| 95 |
+
result = fn(*args, **kwargs)
|
| 96 |
+
except requests.exceptions.Timeout as e:
|
| 97 |
+
error_msg = get_timeout_error_msg(e)
|
| 98 |
+
|
| 99 |
+
if repeat:
|
| 100 |
+
print(error_msg, f"({repeat = })")
|
| 101 |
+
|
| 102 |
+
if isinstance(repeat, int):
|
| 103 |
+
repeat -= 1
|
| 104 |
+
|
| 105 |
+
continue
|
| 106 |
+
else:
|
| 107 |
+
raise CheckSignificanceError(error_msg)
|
| 108 |
+
else:
|
| 109 |
+
return result
|
| 110 |
+
|
| 111 |
+
def check_significance_send_task(model_a_path, model_b_path, repeat_on_conn_timeout=10):
|
| 112 |
url = 'https://czechllm.fit.vutbr.cz/benczechmark-leaderboard/compare_significance/'
|
| 113 |
|
| 114 |
# prepare and send request
|
|
|
|
| 120 |
'model_a': model_a_fp,
|
| 121 |
'model_b': model_b_fp,
|
| 122 |
}
|
| 123 |
+
response = check_significance_repeat_on_conn_timeout(
|
| 124 |
+
repeat_on_conn_timeout,
|
| 125 |
+
requests.post, url, files=files, timeout=60 * 5
|
| 126 |
+
)
|
| 127 |
|
| 128 |
# check response
|
| 129 |
if response.status_code == 202:
|
|
|
|
| 136 |
|
| 137 |
return result_url
|
| 138 |
|
| 139 |
+
def check_significance_wait_for_result(result_url, repeat_on_conn_timeout=10):
|
| 140 |
while True:
|
| 141 |
+
response = check_significance_repeat_on_conn_timeout(
|
| 142 |
+
repeat_on_conn_timeout,
|
| 143 |
+
requests.get, result_url, timeout=60 * 5
|
| 144 |
+
)
|
| 145 |
if response.status_code == 200:
|
| 146 |
result = response.json()
|
| 147 |
break
|