【问题标题】:Django - Ajax HttpResponse delayDjango - Ajax HttpResponse 延迟
【发布时间】:2011-04-08 16:56:19
【问题描述】:

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

查看函数/update/

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 终止才会弹出警报

【问题讨论】:

    标签: jquery python ajax django process


    【解决方案1】:

    虽然您在return HttpResponse(success) 之前看到了打印消息,但该返回语句本身无法异步完成响应。

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

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

    【讨论】:

    • 我不能以某种方式异步运行该函数吗?我认为 Celery 对我的需求来说有点太多了
    猜你喜欢
    • 1970-01-01
    • 2016-08-31
    • 1970-01-01
    • 1970-01-01
    • 2021-05-16
    • 2013-10-09
    • 1970-01-01
    • 2021-12-02
    • 1970-01-01
    相关资源
    最近更新 更多