Example #1
0
        public static async Task <TrainingModels::Export> ExportIteration(
            this ICustomVisionTrainingClient trainingApi, Guid projectId, Guid iterationId, string flavor = "onnx12", int timeoutInSecond = 30)
        {
            TimeSpan timeout = TimeSpan.FromSeconds(timeoutInSecond);

            TrainingModels::Export exportIteration = null;

            try
            {
                exportIteration = exportIteration = string.IsNullOrEmpty(flavor)
                    ? await trainingApi.ExportIterationAsync(projectId, iterationId, platform)
                    : await trainingApi.ExportIterationAsync(projectId, iterationId, platform, flavor);
            }
            catch (HttpOperationException ex)
            {
                string exceptionContent = ex?.Response?.Content ?? string.Empty;
                if (!exceptionContent.Contains("BadRequestExportAlreadyInProgress"))
                {
                    throw ex;
                }
            }

            DateTime startTime = DateTime.Now;

            while (true)
            {
                IList <TrainingModels::Export> exports = await trainingApi.GetExportsAsync(projectId, iterationId);

                exportIteration = string.IsNullOrEmpty(flavor)
                    ? exports?.FirstOrDefault(x => string.Equals(x.Platform, platform, StringComparison.OrdinalIgnoreCase))
                    : exports?.FirstOrDefault(x => string.Equals(x.Platform, platform, StringComparison.OrdinalIgnoreCase) &&
                                              string.Equals(x.Flavor, flavor, StringComparison.OrdinalIgnoreCase));

                if (exportIteration?.Status == "Exporting")
                {
                    await Task.Delay(1000);
                }
                else
                {
                    break;
                }

                if (DateTime.Now - startTime > timeout)
                {
                    throw new TimeoutException("The operation couldn't be completed due to a timeout.");
                }
            }

            return(exportIteration);
        }
Example #2
0
        public static async Task <TrainingModels::Export> ExportIteration(this ICustomVisionTrainingClient trainingApi, Guid projectId, Guid iterationId, int timeoutInSecond = 30)
        {
            TimeSpan timeout = TimeSpan.FromSeconds(timeoutInSecond);

            TrainingModels::Export exportIteration = null;

            try
            {
                exportIteration = await trainingApi.ExportIterationAsync(projectId, iterationId, platform);
            }
            catch (TrainingModels::CustomVisionErrorException ex)
            {
                if (ex.Body.Code != TrainingModels::CustomVisionErrorCodes.BadRequestExportAlreadyInProgress)
                {
                    throw ex;
                }
            }

            DateTime startTime = DateTime.Now;

            while (true)
            {
                IList <TrainingModels::Export> exports = await trainingApi.GetExportsAsync(projectId, iterationId);

                exportIteration = exports?.FirstOrDefault(x => string.Equals(x.Platform, platform, StringComparison.OrdinalIgnoreCase));

                if (exportIteration?.Status == "Exporting")
                {
                    await Task.Delay(1000);
                }
                else
                {
                    break;
                }

                if (DateTime.Now - startTime > timeout)
                {
                    throw new TimeoutException("The operation couldn't be completed due to a timeout.");
                }
            }

            return(exportIteration);
        }