Skip to main content
 首页 » 编程设计

jquery之Django之Ajax HttpResponse 延迟

2025年05月04日32powertoolsteam

我有一个 Django View 函数,如果条件为真,它会调用另一个函数,该函数作为一个单独的进程被调用, View 返回一个状态变量,显示该函数是否被调用,状态返回到一个分配给按钮的 ajax 单击事件。
问题是,当执行函数“do_work”时,ajax 成功函数不会运行,直到“do_work”终止。

查看函数/更新/

if condition: 
        p = Process(target=do_work, args(pack,)) 
        p.daemon = True 
        p.start() 
        success = "True" 
else: 
        success = "False" 
print success 
return HttpResponse(success) 

Ajax 调用

 $('button.update').click(function() { 
                id = $(this).attr('id'); 
                $.post("/update/", { 
                pack : id, 
                }, function(result){ 
                    alert(result); 
                    }); 
                return false; 
                }); 

在这两种情况下都会立即执行“打印成功”,但在函数 do_woks 终止之前不会弹出警报

请您参考如下方法:

尽管您在return HttpResponse(success) 之前看到了打印的消息,但 return 语句本身无法异步完成响应。

大概在该函数返回之后,您的网络服务器在完成响应之前仍在等待其他事情发生(例如所有子进程终止)。

对于 Django 中的异步任务,我强烈推荐 Celery .