예제 #1
0
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)
예제 #2
0
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
예제 #3
0
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