2015-03-24 2 views
0

У меня есть проект django на узле ubuntu EC2, который выполняет интенсивный процесс с интенсивным вычислением, который обычно занимает более 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) 

в индексной функции?

ответ

2

Почти так же просто, как вы сказали:

calculator.apply_async() 

ИЛИ

calculator.delay() 

См the docs о том, как назвать задачи для более подробной информации.

+0

Спасибо, что помогло! – user61629

Смежные вопросы