从 django 函数内部调用基本 celery 任务函数
Basic celery task function call from inside a django function
我在 ubuntu EC2 节点上有一个 django 项目,它执行计算密集型长 运行 进程,通常需要 60 多秒。我需要缓存结果。我一直在阅读 http://www.caktusgroup.com/blog/2014/06/23/scheduling-tasks-celery/ and 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)
在索引函数中?
几乎像你说的那么简单:
calculator.apply_async()
或
calculator.delay()
有关如何调用任务的详细信息,请参阅the docs。
我在 ubuntu EC2 节点上有一个 django 项目,它执行计算密集型长 运行 进程,通常需要 60 多秒。我需要缓存结果。我一直在阅读 http://www.caktusgroup.com/blog/2014/06/23/scheduling-tasks-celery/ and 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)
在索引函数中?
几乎像你说的那么简单:
calculator.apply_async()
或
calculator.delay()
有关如何调用任务的详细信息,请参阅the docs。