2

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

Django中的同时多任务处理

所以它会分享介绍。


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

views.py:

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

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


可能的解决方案:

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

更新

最后用芹菜。尝试 Ajax 并没有成功。

4

1 回答 1

7

函数中的 return 语句表示该函数的结束。* 您的代码片段的 time_sumption 函数超出了函数的范围,因此永远不会到达。

处理任务的解决方案可能是:非常适合将函数包装为异步任务的celery 。如果您必须同步执行操作,为什么不为此使用 ajax,这样您至少可以向用户展示 BeforeSend 发生了什么?

*这适用于 Python 和大多数(如果不是全部)面向对象的编程语言

于 2012-09-13T06:26:33.677 回答