返回HttpResponse()后在Django视图中调用函数

时间:2012-09-13 06:12:36

标签: python django

对于我已经问过的问题,这是一个不同的方法

Simultaneous multitasking in Django

所以它将分享介绍。


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

views.py:

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

由于必须呈现的页面非常简单,并且它不需要来自time_consuming_function()的返回信息,有没有办法跳过多任务处理,只是以某种方式首先呈现并显示页面而不是调用time_consuming_function()?


可能的解决方案:

  1. 当在调用“web_function”之前的页面上按下输入按钮时,附加一些将呈现临时页面的javascript代码?

  2. 更新

    使用芹菜结束。没有成功地尝试使用Ajax。

1 个答案:

答案 0 :(得分:7)

函数中的return语句表示该函数的结束。*您的片段的time_consuming函数在函数scope之外,因此永远不会到达。

处理任务的解决方案可以是:celery,它非常适合将函数包装为异步任务。如果你必须做同步的事情,为什么不使用ajax这样你才能至少向用户显示使用BeforeSend发生了什么?

*对于Python和大多数(如果不是全部)面向对象编程语言都是如此