zhongrj
2025-11-25 b89962006164a462404b79a738bee8cbb6d7fe7e
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
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);
    }
};