Spaces:
Sleeping
Sleeping
File size: 1,324 Bytes
90e26fa cf7a07e ccdb9b2 90e26fa 9e16fe0 90e26fa 9e16fe0 90e26fa 9e16fe0 90e26fa 06f7edb 90e26fa c42a6a7 90e26fa 06f7edb c42a6a7 90e26fa ccdb9b2 90e26fa ccdb9b2 90e26fa 1418034 f223851 c42a6a7 90e26fa |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 |
from functools import partial
import hivemind
from flask import Flask, jsonify, request
from flask_cors import CORS
import config
from p2p_utils import check_reachability
from state_updater import StateUpdaterThread
logger = hivemind.get_logger(__name__)
logger.info("Connecting to DHT")
dht = hivemind.DHT(initial_peers=config.INITIAL_PEERS, client_mode=True, num_workers=32, start=True)
logger.info("Starting Flask app")
app = Flask(__name__)
CORS(app)
logger.info("Starting updater")
updater = StateUpdaterThread(dht, app, daemon=True)
updater.start()
updater.ready.wait()
@app.route("/")
def main_page():
return updater.state_html
@app.route("/api/v1/state")
def api_v1_state():
return app.response_class(response=updater.state_json, status=200, mimetype="application/json")
@app.route("/api/v1/is_reachable/<peer_id>")
def api_v1_is_reachable(peer_id):
peer_id = hivemind.PeerID.from_base58(peer_id)
rpc_info = dht.run_coroutine(partial(check_reachability, peer_id, use_cache=False))
return jsonify(
success=rpc_info["ok"],
message=rpc_info.get("error"),
your_ip=request.remote_addr,
)
@app.route("/metrics")
@app.route("/api/prometheus")
def metrics():
return app.response_class(response=updater.prometheus_metrics, status=200, mimetype="text/plain")
|