from datetime import datetime from getpass import getpass from time import sleep from arango import ArangoClient def now(): """Returns current date and time as string""" return datetime.now().strftime("%Y-%m-%d_%H:%M:%S") def write_stats(db, continuous=False): while True: d = {} for col in db.collections(): if not col["system"]: d[col["name"]] = db.collection(col["name"]).count() del d["stats"] # d['time'] = now() cursor = db.aql.execute( """ FOR doc IN members FILTER doc.checked == true COLLECT WITH COUNT INTO length RETURN length """ ) d["checked_members"] = cursor.next() # Hur många konton per säljare som finns kvar cursor = db.aql.execute( """ for doc in profiles_webshare filter has(doc, "vendor") COLLECT vendor = doc.vendor WITH COUNT INTO length RETURN { "vendor" : vendor, "active" : length } """ ) d["active_vendors"] = [doc for doc in cursor] d["_key"] = now()[:13] db.insert_document("stats", d, overwrite=True) # Sov för att fortsätta senare if continuous: print(now()) sleep(86400) else: break # Info för arangodb user_arango = "Stats" db_arango = "facebook" host_arango = "http://192.168.1.10:8529" # Starta koppling till arangodb # Avkryptera lösen till arango pwd = getpass(f"Arangolösenord för {user_arango}:").strip() db = ArangoClient(hosts=host_arango).db(db_arango, username=user_arango, password=pwd) write_stats(db, continuous=True)