def METHOD_NAME(self, files, migrate=False, num_workers=10, **options):
    set_max_connections(num_workers)
    blob_db = get_blob_db()
    if not isinstance(blob_db, MigratingBlobDB):
        raise CommandError(
            "Expected to find migrating blob db backend (got %r)" % blob_db)
    old_db = blob_db.old_db
    new_db = blob_db.new_db
    ignored = 0
    try:
        pool = Pool(size=num_workers)
        for filepath in files:
            print("Processing {}".format(filepath))
            with open(filepath, encoding='utf-8') as fh:
                for line in fh:
                    if not line:
                        continue
                    try:
                        rec = json.loads(line)
                    except ValueError:
                        ignored += 1
                        print(("Ignore {}", line))
                        continue
                    pool.spawn(process, rec, old_db, new_db, migrate)
        print("CTRL+C to abort")
        while not pool.join(timeout=10):
            print("waiting for {} workers to finish...".format(len(pool)))
    except KeyboardInterrupt:
        pass
    if ignored:
        print("Ignored {} malformed records".format(ignored))
    for type_code, stats in sorted(Stats.items.items()):
        try:
            group = BLOB_MIXIN_MODELS[type_code].__name__
        except KeyError:
            group = CODES.name_of(type_code, "type_code %s" % type_code)
        total = stats.new + stats.old + stats.noref + stats.lost
        print("{}: checked {} records".format(group, total))
        print("  Found in new db: {}".format(stats.new))
        print("  Found in old db: {}".format(stats.old))
        print("  Not referenced: {}".format(stats.noref))
        print("  Not found: {}".format(stats.lost))