jquery - Django - Ajax HttpResponse 延迟

标签 jquery python ajax django process

我有一个 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 .

关于jquery - Django - Ajax HttpResponse 延迟,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3650465/

相关文章:

python - 从 django 中的文件添加选择

javascript - 如何使用 javascript 将图像附加到选择选项中

javascript - 使用异步 ajax 调用构建对象

javascript - 空事件监听器 : Is this ok?

javascript - 重构以下代码以使用 jQuery

javascript - 无法检测用户何时到达手机上浏览器的末尾

javascript - 再次单击或单击其他位置时如何关闭 Bootstrap 弹出窗口

python - 找到总和为 N 的对的更好方法

python - 如何在第一次单击鼠标时选择一个 Sprite ,然后在第二次单击鼠标的位置创建一个新 Sprite

javascript - 为什么浏览器限制跨域AJAX请求而不限制跨域嵌入文件/脚本?