AzureMLConnector.Controllers.BatchExecutionService.InvokeBatchExecutionService C# (CSharp) Method

InvokeBatchExecutionService() public static method

public static InvokeBatchExecutionService ( BES_Obj besobj ) : Task
besobj AzureMLConnector.Models.BES_Obj
return Task
        public static async Task<BatchScoreStatus> InvokeBatchExecutionService(BES_Obj besobj)
        {
            

            // set a time out for polling status
            //const int TimeOutInMilliseconds = 120 * 10000; // Set a timeout of 20 minutes
            BatchScoreStatus status = new BatchScoreStatus();
            string BaseUrl = besobj.GetAPIURL();

            string strApiVersion = besobj.GetApiVersion();
            if(!strApiVersion.Contains("api-version=2.0"))
            {
                status.StatusCode = 0;
                status.Details = "Invalid API version. Please check your Post URL is from version 2.0 of the API help page.";
                status.SetAdditionInformation();
                return status;
            }

            BaseUrl = BaseUrl.Substring(0, BaseUrl.LastIndexOf("/jobs") + 5);   // Correct BaseUrl don't have api-version
            string apiKey = besobj.GetAPIKey();

            
            using (HttpClient client = new HttpClient())
            {
                var request = new BatchExecutionRequest()
                {
                    Input = besobj.GenerateInput(),
                    Outputs = besobj.GenerateOutputs(),
                    GlobalParameters = besobj.GenerateGlobalParameters()                    
                };

                client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", apiKey);


                //Submitting the job...
                // submit the job
                var response = await client.PostAsJsonAsync(BaseUrl + "?" + strApiVersion, request);
                if (!response.IsSuccessStatusCode)
                {
                    status.StatusCode = 0;
                    status.Details = response.ReasonPhrase + ". Job submission encountered error. Please check input.";
                    status.SetAdditionInformation();
                    return status;
                }

                string jobId = await response.Content.ReadAsAsync<string>();
                Console.WriteLine(string.Format("Job ID: {0}", jobId));

                response = await client.PostAsync(BaseUrl + "/" + jobId + "/start?" + strApiVersion, null);

                string jobLocation = BaseUrl + "/" + jobId + "?" + strApiVersion;
                status.JobLocation = jobLocation;
                return status;


                // start the job
                //Starting the job...
                //response = await client.PostAsync(BaseUrl + "/" + jobId + "/start?" + strApiVersion, null);
                //if (!response.IsSuccessStatusCode)
                //{
                //    status.StatusCode = 0;
                //    status.Details = response.ReasonPhrase + ". Cannot get status of Job Id " + jobId;
                //    status.SetAdditionInformation();
                //    return null;
                //}

                //string jobLocation = BaseUrl + "/" + jobId + "?" + strApiVersion;
                //Stopwatch watch = Stopwatch.StartNew();
                //bool done = false;                
                //while (!done)

                //{
                //    //Checking the job status...
                //    response = await client.GetAsync(jobLocation);
                //    if (!response.IsSuccessStatusCode)
                //    {   
                        
                //        return null;
                //    }

                //    status = await response.Content.ReadAsAsync<BatchScoreStatus>();
                //    if (watch.ElapsedMilliseconds > TimeOutInMilliseconds)
                //    {
                //        done = true;
                //        await client.DeleteAsync(jobLocation);
                //    }
                //    switch (status.StatusCode)
                //    {
                //        case BatchScoreStatusCode.NotStarted:
                //            break;
                //        case BatchScoreStatusCode.Running:
                //            break;
                //        case BatchScoreStatusCode.Failed:
                //            done = true;
                //            break;
                //        case BatchScoreStatusCode.Cancelled:
                //            done = true;
                //            break;
                //        case BatchScoreStatusCode.Finished:
                //            done = true;
                //            break;
                //    }

                //    if (!done)
                //    {
                //        Thread.Sleep(1000); // Wait one second
                //    }
                //}

                //status.SetAdditionInformation();
                //return status;
            }

        }
        #endregion

Usage Example

        public async Task <HttpResponseMessage> Post(
            [Metadata("API POST URL", "Web Service Request URI")] string _API_URL,
            [Metadata("API Key", "Web Service API Key")] string _API_Key,
            [Metadata("Storage Account Name (Input)", "Azure Storage Account Name")] string _Input_AccountName,
            [Metadata("Storage Account Key (Input)", "Azure Storage Account Key")] string _Input_AccountKey,
            [Metadata("Storage Container Name (Input)", "Azure Storage Container Name")] string _Input_Container,
            [Metadata("Blob Name (Input)", "Azure Storage Blob Name")] string _Input_Blob,

            [Metadata(FriendlyName = "Global Parameters Keys", Description = "Comma separated list of parameters", Visibility = VisibilityType.Advanced)] string _GlobalKeys = "",
            [Metadata(FriendlyName = "Global Parameters Values", Description = "Comma separated list of values", Visibility = VisibilityType.Advanced)] string _GlobalValues = ""

            )
        {
            BES_Input Obj = new BES_Input
            {
                API_URL           = _API_URL,
                API_Key           = _API_Key,
                Input_AccountName = _Input_AccountName,
                Input_AccountKey  = _Input_AccountKey,
                Input_Container   = _Input_Container,
                Input_Blob        = _Input_Blob,

                GlobalKeys   = _GlobalKeys,
                GlobalValues = _GlobalValues
            };

            BatchScoreStatus result = await BatchExecutionService.InvokeBatchExecutionService(Obj);

            HttpResponseMessage response = Request.CreateResponse <BatchScoreStatus>(HttpStatusCode.Accepted, result);

            response.Headers.Location = new Uri(string.Format("https://" + Request.RequestUri.Authority + "/api/CheckStatus?url={0}&api={1}", WebUtility.UrlEncode(result.JobLocation), WebUtility.UrlEncode(_API_Key)));
            response.Headers.Add("Retry-after", "30");
            return(response);
        }
All Usage Examples Of AzureMLConnector.Controllers.BatchExecutionService::InvokeBatchExecutionService
BatchExecutionService