LoadTest v2.0.0: версия сборки (страница, /health, ответы) + вывод версии
This commit is contained in:
+9
-3
@@ -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)
|
||||
|
||||
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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>
|
||||
|
||||
Reference in New Issue
Block a user