Spaces:
Sleeping
Sleeping
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() | |
def main_page(): | |
return updater.state_html | |
def api_v1_state(): | |
return app.response_class(response=updater.state_json, status=200, mimetype="application/json") | |
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, | |
) | |
def metrics(): | |
return app.response_class(response=updater.prometheus_metrics, status=200, mimetype="text/plain") | |