временный /fetch для проверки egress (Flask -> ВМ)
This commit is contained in:
+29
@@ -140,6 +140,35 @@ def messages():
|
||||
return jsonify(result)
|
||||
|
||||
|
||||
@app.route("/fetch")
|
||||
def fetch_url():
|
||||
"""ВРЕМЕННЫЙ: исходящий GET по URL (проверка egress из кластера).
|
||||
|
||||
Нужен для проверки схемы «Flask сам тянет большой файл с ВМ».
|
||||
Делает GET по переданному url и возвращает HTTP-статус + размер ответа.
|
||||
"""
|
||||
import requests
|
||||
|
||||
url = request.args.get("url", "")
|
||||
if not url:
|
||||
return jsonify({"ok": False, "error": "нет параметра url"}), 400
|
||||
|
||||
t0 = time.time()
|
||||
try:
|
||||
r = requests.get(url, timeout=120)
|
||||
size = len(r.content)
|
||||
return jsonify({
|
||||
"ok": True,
|
||||
"url": url,
|
||||
"status": r.status_code,
|
||||
"size_bytes": size,
|
||||
"size_mb": round(size / (1024 * 1024), 3),
|
||||
"total_ms": round((time.time() - t0) * 1000, 2),
|
||||
})
|
||||
except Exception as e:
|
||||
return jsonify({"ok": False, "error": type(e).__name__ + ": " + str(e), "url": url}), 502
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
# ОБЯЗАТЕЛЬНО для платформы: `python site/app.py` должен стартовать сервер.
|
||||
# debug=False - прод-режим, без reloader (иначе поднимается второй процесс).
|
||||
|
||||
Reference in New Issue
Block a user