def show_info(result, parser, options): """Print a list of all extensions, loggers etc""" dm = model.get_doc_model() print "Database:" info = yield dm.db.infoDB() fmt = " %(doc_count)d docs total, %(doc_del_count)d deleted, " "update seq at %(update_seq)d, %(disk_size)d bytes." print fmt % info # ouch - this seems a painful way of fetching total unique keys? results = yield dm.open_view( startkey=["rd.core.content", "key"], endkey=["rd.core.content", "key", {}], group_level=3 ) print " %d unique raindrop keys" % len(results["rows"]) print "Document counts by schema:" results = yield dm.open_view( startkey=["rd.core.content", "schema_id"], endkey=["rd.core.content", "schema_id", {}], group_level=3 ) infos = [] for row in results["rows"]: sch_id = row["key"][-1] infos.append((sch_id, row["value"])) for sch_id, count in sorted(infos): print " %s: %d" % (sch_id, count) print print "Raindrop extensions:" exts = sorted((yield pipeline.load_extensions(dm)).items()) # sort by ID. for _, ext in exts: print " %s: %s" % (ext.id, ext.doc["info"]) print print "Loggers" # yuck - reach into impl - and hope all have been initialized by now # (they should have been as we loaded the extensions above) for name in logging.Logger.manager.loggerDict: print " ", name
def make_graph(dm, filename="pipeline.svg", prog="dot"): G=pgv.AGraph() G.graph_attr['label']='raindrop message pipeline' sources = yield get_raw_sources(dm) for ext_id, schemas in sources.iteritems(): label = "%s" % (ext_id,) for sid in schemas: print ext_id, "is a source of", sid G.add_edge("the intertubez", sid, label=label) exts = yield pipeline.load_extensions(dm) for ext_id, ext in exts.iteritems(): for sid in ext.source_schemas: label = "%s" % (ext_id,) target_types = yield get_schemas_created_by(dm, ext_id) for tt in target_types: G.add_edge(sid, tt, label=label) G.draw(filename, prog=prog)
print "Document counts by schema:" results = dm.open_view( startkey=["schema_id"], endkey=["schema_id", {}], group_level=2) infos = [] for row in results['rows']: sch_id = row['key'][-1] infos.append((sch_id, row['value'])) for sch_id, count in sorted(infos): print " %s: %d" % (sch_id, count) print print "Raindrop extensions:" exts = sorted((pipeline.load_extensions(dm)).items()) # sort by ID. for _, ext in exts: print " %s: %s" % (ext.id, ext.doc['info']) print print "Loggers" # yuck - reach into impl - and hope all have been initialized by now # (they should have been as we loaded the extensions above) for name in logging.Logger.manager.loggerDict: print " ", name def _safe_run(fn, *args): try: fn(*args) except Exception: logger.exception("%r failed", fn)