code: def cleanup():
      
      failed = {}
      success = []
      for dbname, db in dbs.items():
          try:
              #Force the database save, even if the time hasn't elapsed yet.
              db.save(True)
              success.append(dbname)
          except: # pragma: no cover
              import sys, traceback
              xcls, xerr = sys.exc_info()[0:2]
              failed[dbname] = traceback.format_tb(sys.exc_info()[2])
  
      for sdb in success:
          if writeable:
              msg.okay("Project {0}.{1} saved successfully.".format(*sdb), 0)
      for fdb, tb in failed.items(): # pragma: no cover
          msg.err("Project {1}.{2} save failed:\n{0}".format(tb, *fdb),
                  prefix=False)
docs: Saves all the open databases to JSON so that the kernel can be shut down
      without losing in-memory collections.