LoadTest v2.0.0: версия сборки (страница, /health, ответы) + вывод версии

This commit is contained in:
naeel
2026-08-18 09:14:31 +04:00
parent 9de9bd414f
commit c2e450f86f
3 changed files with 34 additions and 3 deletions
+9 -3
View File
@@ -17,6 +17,10 @@ import time
from flask import Flask, jsonify, render_template, request
# Версия сборки. ВЫВОДИТСЯ на страницу и в /health - чтобы сразу видеть,
# какая версия реально задеплоена на платформу.
VERSION = "2.0.0"
# Явно указываем папки шаблонов и статики -
# платформа запускает `python site/app.py` из корня репо, иначе Flask не найдёт шаблоны.
app = Flask(__name__, template_folder="templates", static_folder="static")
@@ -28,13 +32,13 @@ app = Flask(__name__, template_folder="templates", static_folder="static")
@app.route("/")
def index():
"""Главная страница - форма выбора файла и загрузки."""
return render_template("index.html")
return render_template("index.html", version=VERSION)
@app.route("/health")
def health():
"""Проверка живости для платформы."""
return "ok"
"""Проверка живости для платформы + версия сборки."""
return "ok v" + VERSION
@app.route("/upload", methods=["POST"])
@@ -83,6 +87,7 @@ def upload():
"md5": hashlib.md5(data).hexdigest(), # контрольная сумма принятых байт
"meta": meta,
}
result["version"] = VERSION # версия сборки прямо в ответе
return jsonify(result)
@@ -131,6 +136,7 @@ def messages():
"md5": hashlib.md5(data).hexdigest(), # контрольная сумма принятых байт
"meta": meta,
}
result["version"] = VERSION # версия сборки прямо в ответе
return jsonify(result)
+8
View File
@@ -21,6 +21,14 @@ h1 {
margin-bottom: 6px;
}
/* Версия сборки */
.version {
font-size: 12px;
color: #2563eb;
font-weight: bold;
margin: 0 0 12px;
}
.hint {
color: #555;
font-size: 14px;
+17
View File
@@ -10,6 +10,7 @@
<body>
<div class="wrap">
<h1>LoadTest - проверка загрузки файлов</h1>
<p class="version">Сборка: v{{ version }} <span id="healthInfo"></span></p>
<p class="hint">
Выберите ОДИН файл (в т.ч. большой) и нажмите «Загрузить».
Файл читается в память Flask (на диск не пишется). Результат: файл дошёл или нет + статистика.
@@ -215,6 +216,7 @@
'HTTP статус: ' + httpStatus + '\n\n';
out += '-- СЕРВЕР (что реально дошло) --\n' +
'Версия сборки: ' + (data.version || '?') + '\n' +
'Принято байт: ' + m.size_bytes + ' (' + m.size_kb + ' КБ)\n' +
'Чтение в память: ' + s.read_ms + ' мс\n' +
'Обработка всего: ' + s.total_ms + ' мс\n' +
@@ -382,6 +384,7 @@
out += '-- СЕРВЕР (что реально дошло) --\n' +
'Имя файла: ' + f.name + '\n' +
'Версия сборки: ' + (data.version || '?') + '\n' +
'MIME: ' + f.mime + '\n' +
'Принято байт: ' + f.size_bytes + ' (' + f.size_mb + ' МБ)\n' +
'Чтение в память: ' + s.read_ms + ' мс\n' +
@@ -398,6 +401,20 @@
result.textContent = out;
}
// ---- Показать фактическую версию сборки с /health ----
function showRuntimeVersion() {
var el = document.getElementById('healthInfo');
var xhr = new XMLHttpRequest();
xhr.open('GET', '/health');
xhr.timeout = 5000;
xhr.onload = function () {
if (el) el.textContent = '| /health: ' + (xhr.responseText || '');
};
xhr.onerror = function () { if (el) el.textContent = '| /health: недоступен'; };
xhr.send();
}
showRuntimeVersion();
</script>
</body>
</html>