3

如果我有以下代码:

$('#do-updates').click(function() {
    $.post('/do_updates/', 
       function(response){
          location.reload();
    });
});

它调用的python函数是:

def do_update():
    for item in items:
        do something

我调用的 python 函数大约需要 2m 才能完成。

如果用户执行以下操作:

1 - Click on the #do-updates button
2 - Navigate away from the page after 10s

会发生什么?整个do_updates()函数会运行吗,因为它是异步调用的?还是该功能会超时?do_updates()如果它确实超时,那么在后台执行该功能以使其完成的更好方法是什么?

4

1 回答 1

2

如果您不需要前端 do_something 的结果,您可以使用一些异步任务解决方案。Celery可能是 django 中最流行且最易于使用的。它将工作委托给通过消息队列(rabbitmq,redis,..)作为不同进程运行的专用工作人员。

于 2013-10-27T20:27:05.793 回答