временный /fetch для проверки egress (Flask -> ВМ)
This commit is contained in:
+29
@@ -140,6 +140,35 @@ def messages():
|
|||||||
return jsonify(result)
|
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__":
|
if __name__ == "__main__":
|
||||||
# ОБЯЗАТЕЛЬНО для платформы: `python site/app.py` должен стартовать сервер.
|
# ОБЯЗАТЕЛЬНО для платформы: `python site/app.py` должен стартовать сервер.
|
||||||
# debug=False - прод-режим, без reloader (иначе поднимается второй процесс).
|
# debug=False - прод-режим, без reloader (иначе поднимается второй процесс).
|
||||||
|
|||||||
Reference in New Issue
Block a user