Waiting for a Submission
Introduction
As an alternative to waiting for submissions manually, use the WaitForSubmissions query. WaitForSubmissions continuously polls Indico for the status of your submission, up until the max waiting period. Once the submission has either failed or succeeded to process, it returns a Submission object just like GetSubmission.
WaitForSubmissions
Inputs
submission_ids: List[int] submission IDs
Outputs
Submission object
Try It Out
You can try out WaitForSubmissions below.
from indico.errors import IndicoTimeoutError
from indico.queries import WaitForSubmissions
# your list of Submission ids
submission_ids = [1, 2, 3, 4]
# wait for those Submissons to process.
submissions: list | None = None
while not submissions:
try:
# configuring a timeout here can help increase and / or reduce the number
# of API calls made.
submissions = client.call(WaitForSubmissions(submission_ids, timeout = 60))
except IndicoTimeoutError:
print("Still waiting...")
submission = submissions[0]
print(submission.status, submission.input_filename, submission.retrieved, submission.id)
// Waiting for a submission is handled within GetAsync which awaits until a Submission has reached a complete status
namespace Examples
{
public class GetSubmission
{
private static string GetToken() =>
File.ReadAllText(Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.UserProfile),
"indico_api_token.txt"));
public static async Task Main()
{
var client = new IndicoClient(GetToken(), new Uri("https://mycluster.indico.io"));
var submissionId = 1;
var submissionClient = client.Submissions();
var submission = await submissionClient.GetAsync(submissionId);
Console.WriteLine(submission.Id);
}
}
}package com.indico;
import com.indico.entity.Submission;
import com.indico.query.GetSubmission;
import com.indico.type.SubmissionStatus;
public class main {
public IndicoClient client;
private static String token_path = "./indico_api_token.txt";
private static String host = "mycluster.indico.io"
private static Integer submission_id = 1;
public static void main(String args[]) throws Exception {
IndicoConfig config = new IndicoConfig.Builder().host(host)
.protocol("https")
.tokenPath(token_path)
.build();
client = new IndicoKtorClient(config);
GetSubmission submission = client.getSubmission();
submission.submissionId(submission_id);
Submission result = submission.query();
/*
Wait for submission to reach COMPLETE or FAILED status
*/
while(result.status != SubmissionStatus.COMPLETE && result.status != SubmissionStatus.FAILED){
result = submission.query();
}
System.exit(0);
}
}