def wait_for_export(client: Client, export_url: str, job_id: str, output: widgets.Output, export_ssl: bool = True, wait_interval: int = DEFAULT_WAIT_INTERVAL, wait_timeout: int = DEFAULT_WAIT_TIMEOUT): job_id_output = widgets.Output() update_widget_output = widgets.Output() with output: display(job_id_output, update_widget_output) with job_id_output: print(f'Wait called on export job {job_id}') with update_widget_output: beginning_time = datetime.datetime.utcnow() while datetime.datetime.utcnow() - beginning_time < ( datetime.timedelta(seconds=wait_timeout)): update_widget_output.clear_output() print('Checking for latest status...') status_res = client.export_status(export_url, job_id, export_ssl) status_res.raise_for_status() export_status = status_res.json() if export_status['status'] in ['succeeded', 'failed']: print('Export is finished') return export_status else: print(f'Status is {export_status["status"]}') print(f'Waiting for {wait_interval} before checking again...') time.sleep(wait_interval)
def neptune_ml_export(args: argparse.Namespace, client: Client, output: widgets.Output, cell: str): export_ssl = not args.export_no_ssl if args.which_sub == 'start': if cell == '': return 'Cell body must have json payload or reference notebook variable using syntax ${payload_var}' export_job = neptune_ml_export_start(client, cell, args.export_url, export_ssl) if args.wait: return wait_for_export(client, args.export_url, export_job['jobId'], output, export_ssl, args.wait_interval, args.wait_timeout) else: return export_job elif args.which_sub == 'status': if args.wait: status = wait_for_export(client, args.export_url, args.job_id, output, export_ssl, args.wait_interval, args.wait_timeout) else: status_res = client.export_status(args.export_url, args.job_id, export_ssl) status_res.raise_for_status() status = status_res.json() return status
def neptune_ml_export_status(client: Client, export_url: str, job_id: str, export_ssl: bool = True): res = client.export_status(export_url, job_id, export_ssl) res.raise_for_status() job = res.json() return job