예제 #1
0
def sync_summaries(last_check: Optional[datetime], run_uuid: str, client: RunClient):
    events_path = CONTEXT_MOUNT_RUN_EVENTS_FORMAT.format(run_uuid)
    # check if there's a path to sync
    if not os.path.exists(events_path):
        return

    # crawl dirs
    summaries = []
    last_values = {}
    connection = get_artifacts_connection()
    connection_name = connection.name if connection else None

    for events_kind in get_dirs_under_path(events_path):
        _summaries, _last_values = sync_events_summaries(
            events_path=events_path,
            events_kind=events_kind,
            last_check=last_check,
            connection_name=connection_name,
        )
        summaries += _summaries
        last_values.update(_last_values)

    if summaries:
        client.log_artifact_lineage(summaries)
    if last_values:
        client.log_outputs(**last_values)
예제 #2
0
def handle_iteration(
    client: RunClient,
    suggestions: List[Dict] = None,
):
    if not suggestions:
        logger.warning("No new suggestions were created")
        return
    try:
        logger.info("Generated new {} suggestions".format(len(suggestions)))
        client.log_outputs(suggestions=[sanitize_dict(s) for s in suggestions],
                           async_req=False)
    except Exception as e:
        exp = "Polyaxon tuner failed logging iteration definition: {}\n{}".format(
            repr(e), traceback.format_exc())
        client.log_failed(reason="PolyaxonTunerIteration", message=exp)
        logger.warning(e)