триггерная функция после возврата HttpResponse из django view

Я разрабатываю веб-сервер django, на котором другая машина (с известным IP) может загружать электронную таблицу на мой веб-сервер. После обновления таблицы я хочу запустить некоторую обработку/оценку/анализ таблицы (которая может занять >5 минут --- слишком долго для другого сервера, чтобы разумно ждать ответа) и затем отправить другой машине (с известным IP) HttpResponse, указывающий, что обработка данных завершена.

Я понимаю, что нельзя выполнить processing.data() после возврата HttpResponse, но функционально мне нужен код, который выглядит примерно так:

# processing.py
def spreadsheet(*args, **kwargs):
    print "[robot voice] processing spreadsheet........."
    views.finished_processing_spreadsheet()

# views.py
def upload_spreadsheet(request):
    print "save the spreadsheet somewhere"
    return HttpResponse("started processing spreadsheet")
    processing.data()

def finished_processing_spreadsheet():
    print "send good news to other server (with known IP)"

Я знаю, как написать каждую функцию отдельно, но как я могу эффективно вызвать processing. data() после того, как views.upload_spreadsheet вернул ответ?

Я пробовал использовать django's request_finished signaling framework, но это не вызывает processing.spreadsheet() метод после возврата HttpResponse. Я попробовал использовать декоратор на views.upload_spreadsheet с той же проблемой.

Я догадываюсь, что это может быть связано с написанием промежуточного программного обеспечения или, возможно, пользовательского представления на основе класса, ни в том, ни в другом у меня нет опыта, поэтому я решил задать этот вопрос Вселенной в поисках помощи.

Спасибо за помощь!

6
задан dino 29 February 2012 в 08:39
поделиться