stats/fetchpeers.py

63 líneas
1.3 KiB
Python

from app.libraries.setup import Setup
from app.libraries.database import Database
from app.libraries.peers import Peers
from app.libraries.nodeinfo import Nodeinfo
import ray
ray.init(num_cpus = 25) # Specify this system CPUs.
@ray.remote
def peerapi(peer):
api = peers.getapi(peer) # get peer nodeinfo's URL
if api != '':
db.write_server(peer, api)
print(f'server: {peer}, api: {api}')
server_peers.remote(peer)
else:
db.write_deadserver(peer)
print(f'*** server: {peer}, api not found!')
@ray.remote
def server_peers(server):
peers_list = peers.getpeers(server) # check and get peers if available
if peers_list != None: # if peers list is available
print(f'\n{server}: {len(peers_list)} peers\n')
db.update_peer(server) #update peer
for peer in peers_list:
print(f'{server}({len(peers_list)}): checking peer {peer}...')
found = db.check_peer(peer)
if not found:
peerapi.remote(peer)
if __name__ == '__main__':
db = Database()
setup = Setup()
peers = Peers()
peers_list = peers.getpeers(setup.mastodon_hostname) #get peers from Mastodon host
if peers_list != None:
ray.get([peerapi.remote(peer) for peer in peers_list])