Django中同时进行多任务处理

时间:2012-09-11 12:09:57

标签: python django

我的网络项目中有一个耗时的功能。当函数正在进行计算时,应该呈现一个网页,通知用户一旦计算完成,结果将通过电子邮件发送。

如果我在函数调用之后放置渲染,那么在time_consuming_function()完​​成之后,网页才会被渲染,这会使响应变得毫无意义。

views.py:

def web_function(request):
    ...
    time_consuming_function()
    return HttpResponse()

python线程是唯一的方法吗?


更新

结束使用cellery,因为它似乎比ztaskd

更好

2 个答案:

答案 0 :(得分:6)

可行的方法是使用ztaskd执行time_consuming_function()

from django_ztask.decorators import task

@task()
def time_consuming_function()
    ...

views.py:

def web_function(request):
    ...
    time_consuming_function.async()
    return HttpResponse()

答案 1 :(得分:4)

我建议您查看一个任务调度框架,例如Celery(或只是普通Rabbit MQ