Я разрабатываю веб-сервер 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
с той же проблемой.
Я догадываюсь, что это может быть связано с написанием промежуточного программного обеспечения или, возможно, пользовательского представления на основе класса, ни в том, ни в другом у меня нет опыта, поэтому я решил задать этот вопрос Вселенной в поисках помощи.
Спасибо за помощь!