【问题标题】:Simultaneous multitasking in DjangoDjango中的同时多任务处理
【发布时间】:2012-09-11 12:09:56
【问题描述】:

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

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

views.py:

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

python 线程是唯一的出路吗?


更新

最终使用 cellery,因为它似乎比 ztaskd 有更好的文档记录

【问题讨论】:

  • 不是,我宁愿将celery集成到项目中,设置一个consumer server,这样任务就从django发送到那里,django渲染页面,并通过ajax定期更新内容,其中django 再次从数据库中检索信息,因为 celery 的工作进程正在将结果放在那里。
  • 你能告诉我你是怎么用芹菜的,我对芹菜比较陌生。

标签: python django


【解决方案1】:

方法是使用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()

【讨论】:

    【解决方案2】:

    我建议你看一个任务调度框架,比如 Celery(或者只是简单的Rabbit MQ

    【讨论】:

    • 虽然这是正确的想法,但我不建议这样做。 DJ Celery 是真正的 PITA。
    猜你喜欢
    • 1970-01-01
    • 2011-04-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多