import $ from 'jquery'; export default { waitForCompletion: (celery_task_id, cb, progress_cb) => { const checkUrl = "/api/workers/check/"; let errorCount = 0; let url = checkUrl + celery_task_id; const check = () => { $.ajax({ type: 'GET', url }).done(result => { if (result.error){ cb(result.error); }else if (result.ready){ cb(); }else{ if (typeof progress_cb === "function" && result.progress !== undefined && result.status !== undefined){ progress_cb(result.status, result.progress); } // Retry setTimeout(() => check(), 2000); } }).fail(error => { console.warn(error); if (errorCount++ < 10) setTimeout(() => check(), 2000); else cb(error.statusText); }); }; check(); }, downloadFile: (celery_task_id, filename = "") => { window.location.href = `/api/workers/get/${celery_task_id}?filename=${filename}`; }, getOutput: (celery_task_id, cb, getUrl = "/api/workers/get/") => { let url = getUrl + celery_task_id; $.ajax({ type: 'GET', url: url }).done(result => { if (result.error) cb(result.error); else if (result.output !== undefined) cb(null, result.output); else cb(new Error("Invalid response: " + JSON.stringify(result))); }).fail(cb); } };