从django函数内部调用基本芹菜任务函数

时间:2015-03-24 14:30:01

标签: python django celery

我在ubuntu EC2节点上有一个django项目,它执行计算密集型的长时间运行过程,通常需要60秒。我需要缓存结果。我一直在阅读http://www.caktusgroup.com/blog/2014/06/23/scheduling-tasks-celery/http://michal.karzynski.pl/blog/2014/05/18/setting-up-an-asynchronous-task-queue-for-django-using-celery-redis/以及文档。我已经能够在命令行上完成一项基本任务,但我不清楚如何从django函数中启动任务。

现在我的django视图中的代码结构是:

from django.shortcuts import render
from django.http import HttpResponse
from django.views.decorators.csrf import csrf_exempt
from __future__ import absolute_import
from celery import shared_task

@csrf_exempt
def index(request):

    token = str(request.POST.get('token', False))
    calculator(token)
    return HttpResponse(token)

@shared_task
def calculator(token):

    # do calculation
    # store result in cache

    return

就像调用一样简单:

calculator(token)

在索引函数中?

1 个答案:

答案 0 :(得分:2)

几乎和你说的一样简单:

calculator.apply_async()

OR

calculator.delay()

有关详细信息,请参阅the docs有关如何调用任务的信息。