def alfred2(): try: start_time = time.time() mysql = FreifunkMySQL() banned = mysql.fetchall(""" SELECT mac FROM banned """, (), "mac") hoodsv2 = mysql.fetchall(""" SELECT name FROM hoodsv2 """, (), "name") statstime = utcnow() netifdict = mysql.fetchdict("SELECT id, name FROM netifs", (), "name", "id") hoodsdict = mysql.fetchdict("SELECT id, name FROM hoods", (), "name", "id") r = make_response(json.dumps({})) r.mimetype = 'application/json' if request.method == 'POST': try: alfred_data = request.get_json() except Exception as e: writelog( CONFIG["debug_dir"] + "/fail_alfred2.txt", "{} - {}".format(request.environ['REMOTE_ADDR'], 'JSON parsing failed')) writefulllog( "Warning: Error converting ALFRED2 data to JSON:\n__%s" % (request.get_data(True, True).replace("\n", "\n__"))) r.headers['X-API-STATUS'] = "JSON parsing failed" return r if alfred_data: # load router status xml data i = 1 for mac, xml in alfred_data.items(): import_nodewatcher_xml(mysql, mac, xml, banned, hoodsv2, netifdict, hoodsdict, statstime) if (i % 500 == 0): mysql.commit() i += 1 mysql.commit() r.headers['X-API-STATUS'] = "ALFRED2 data imported" mysql.close() writelog( CONFIG["debug_dir"] + "/apitime.txt", "%s - %.3f seconds (alfred2)" % (request.environ['REMOTE_ADDR'], time.time() - start_time)) return r except Exception as e: writelog(CONFIG["debug_dir"] + "/fail_alfred.txt", "{} - {}".format(request.environ['REMOTE_ADDR'], str(e))) writefulllog("Warning: Error while processing ALFRED2 data: %s\n__%s" % (e, traceback.format_exc().replace("\n", "\n__"))) r.headers['X-API-STATUS'] = "ERROR processing ALFRED2 data" return r
def alfred(): try: start_time = time.time() mysql = FreifunkMySQL() #set_alfred_data = {65: "hallo", 66: "welt"} set_alfred_data = {} r = make_response(json.dumps(set_alfred_data)) #import cProfile, pstats, io #pr = cProfile.Profile() #pr.enable() banned = mysql.fetchall(""" SELECT mac FROM banned """,(),"mac") statstime = utcnow() netifdict = mysql.fetchdict("SELECT id, name FROM netifs",(),"name","id") if request.method == 'POST': alfred_data = request.get_json() if alfred_data: # load router status xml data i = 1 for mac, xml in alfred_data.get("64", {}).items(): import_nodewatcher_xml(mysql, mac, xml, banned, netifdict, statstime) if (i%500 == 0): mysql.commit() i += 1 mysql.commit() r.headers['X-API-STATUS'] = "ALFRED data imported" mysql.close() #pr.disable() #s = io.StringIO() #sortby = 'cumulative' #ps = pstats.Stats(pr, stream=s).sort_stats(sortby) #ps.print_stats() #print(s.getvalue()) writelog(CONFIG["debug_dir"] + "/apitime.txt", "%s - %.3f seconds" % (request.environ['REMOTE_ADDR'],time.time() - start_time)) r.mimetype = 'application/json' return r except Exception as e: writelog(CONFIG["debug_dir"] + "/fail_alfred.txt", "{} - {}".format(request.environ['REMOTE_ADDR'],str(e))) import traceback writefulllog("Warning: Error while processing ALFRED data: %s\n__%s" % (e, traceback.format_exc().replace("\n", "\n__")))