def handle(self, *args, **options): self.stdout.write("Checking purgatory for unsaved models...\n") call_command("retrypurgatory") kwargs = {} if len(args) >= 1: kwargs["host"] = args[0] client = SyncClient(**kwargs) if client.test_connection() != "success": self.stderr.write("KA Lite host is currently unreachable: %s\n" % client.url) return self.stdout.write("Initiating SyncSession...\n") result = client.start_session() if result != "success": self.stderr.write("Unable to initiate session: %s\n" % result.content) return self.stdout.write("Syncing models...\n") while True: results = client.sync_models() # display counts for this block of models being transferred self.stdout.write("\tUploaded: %d (%d failed)\n" % ( results["upload_results"]["saved_model_count"], results["upload_results"]["unsaved_model_count"])) self.stdout.write("\tDownloaded: %d (%d failed)\n" % ( results["download_results"]["saved_model_count"], results["download_results"]["unsaved_model_count"])) # count the number of successes and failures upload_results = results["upload_results"] download_results = results["download_results"] success_count = upload_results["saved_model_count"] + download_results["saved_model_count"] fail_count = upload_results["unsaved_model_count"] + download_results["unsaved_model_count"] # stop when nothing is being transferred anymore if success_count + fail_count == 0: break self.stdout.write("Closing session... (Total uploaded: %d, Total downloaded: %d)\n" % (client.session.models_uploaded, client.session.models_downloaded)) self.stdout.write("Checking purgatory once more, to try saving any unsaved models...\n") call_command("retrypurgatory") client.close_session()
def handle(self, *args, **options): self.stdout_writeln(("Checking purgatory for unsaved models")+"...") call_command("retrypurgatory") kwargs = {} if len(args) >= 1: kwargs["host"] = args[0] if len(args) >= 2: max_retries = args[1] else: max_retries = 5 try: client = SyncClient(**kwargs) except Exception as e: raise CommandError(e) if client.test_connection() != "success": self.stderr_writeln(("KA Lite host is currently unreachable")+": %s" % client.url) return self.stdout_writeln(("Initiating SyncSession")+"...") try: result = client.start_session() except Exception as e: raise CommandError(e) if result != "success": self.stderr_writeln(("Unable to initiate session")+": %s" % result.content) return self.stdout_writeln(("Syncing models")+"...") failure_tries = 0 while True: results = client.sync_models() upload_results = results["upload_results"] download_results = results["download_results"] # display counts for this block of models being transferred self.stdout_writeln("\t%-15s: %d (%d failed, %d error(s))" % ( ("Uploaded"), upload_results["saved_model_count"], upload_results["unsaved_model_count"], upload_results.has_key("error"))) self.stdout_writeln("\t%-15s: %d (%d failed, %d error(s))" % ( ("Downloaded"), download_results["saved_model_count"], download_results["unsaved_model_count"], download_results.has_key("error"))) # count the number of successes and failures success_count = upload_results["saved_model_count"] + download_results["saved_model_count"] fail_count = upload_results["unsaved_model_count"] + download_results["unsaved_model_count"] error_count = upload_results.has_key("error") + download_results.has_key("error") + upload_results.has_key("exceptions") # Report any errors if error_count > 0: if upload_results.has_key("error"): self.stderr_writeln("%s: %s"%(("Upload error"),upload_results["error"])) if download_results.has_key("error"): self.stderr_writeln("%s: %s"%(("Download error"),download_results["error"])) if upload_results.has_key("exceptions"): self.stderr_writeln("%s: %s"%(("Upload exceptions"),upload_results["exceptions"][:200])) # stop when nothing is being transferred anymore if success_count == 0 and (fail_count == 0 or failure_tries >= max_retries): break failure_tries += (fail_count > 0 and success_count == 0) # Report summaries self.stdout_writeln("%s... (%s: %d, %s: %d, %s: %d)" % (("Closing session"), ("Total uploaded"), client.session.models_uploaded, ("Total downloaded"), client.session.models_downloaded, ("Total errors"), client.session.errors)) # Report any exceptions if client.session.errors: self.stderr_writeln("Completed with %d errors."%client.session.errors) if failure_tries >= max_retries: self.stderr_writeln("%s (%d)."%("Failed to upload all models (stopped after failed attempts)",failure_tries)) self.stdout_writeln(("Checking purgatory once more, to try saving any unsaved models")+"...") call_command("retrypurgatory") client.close_session()
def handle(self, *args, **options): self.stdout.write("Checking purgatory for unsaved models...\n") call_command("retrypurgatory") kwargs = {} if len(args) >= 1: kwargs["host"] = args[0] client = SyncClient(**kwargs) if client.test_connection() != "success": self.stderr.write("KA Lite host is currently unreachable: %s\n" % client.url) return self.stdout.write("Initiating SyncSession...\n") result = client.start_session() if result != "success": self.stderr.write("Unable to initiate session: %s\n" % result.content) return self.stdout.write("Syncing models...\n") while True: results = client.sync_models() # display counts for this block of models being transferred self.stdout.write( "\tUploaded: %d (%d failed)\n" % (results["upload_results"]["saved_model_count"], results["upload_results"]["unsaved_model_count"])) self.stdout.write( "\tDownloaded: %d (%d failed)\n" % (results["download_results"]["saved_model_count"], results["download_results"]["unsaved_model_count"])) # count the number of successes and failures upload_results = results["upload_results"] download_results = results["download_results"] success_count = upload_results[ "saved_model_count"] + download_results["saved_model_count"] fail_count = upload_results[ "unsaved_model_count"] + download_results["unsaved_model_count"] # stop when nothing is being transferred anymore if success_count + fail_count == 0: break self.stdout.write( "Closing session... (Total uploaded: %d, Total downloaded: %d)\n" % (client.session.models_uploaded, client.session.models_downloaded)) self.stdout.write( "Checking purgatory once more, to try saving any unsaved models...\n" ) call_command("retrypurgatory") client.close_session()