Django: Как выполнить длительную функцию, после отдачи ответа пользователю?

Стандартная функция вида:

def view(request, id):
    article = get_object_or_404(Articles, id=id)
    return render(request, 'view.html', {'article': article})


И здесь нам надо вставить функцию, которая будет записывать статистику о посещении. Она будет лезть в базу, проверять наличие записи этого поста и этого пользователя, и если таковой нет, создаст новую запись.

def view(request, id):
    article = get_object_or_404(Articles, id=id)
    save_stat(request, article.id)
    return render(request, 'view.html', {'article': article})


Но через некоторое время эта функция будет весьма долгой, и пользователю придется ждать, пока Django запишет о нем статистику, и только после этого он получит свой ответ.
Возможно ли сначала отдать пользователю ответ, затем, уже без его присутствия, сохранить информацию о нем?
  • Вопрос задан
  • 176 просмотров
Решения вопроса 1
petermzg
@petermzg
Самый лучший программист
По логике, надо просто выполнить внутренний HTTP запрос и не дожидаться ответа.
Из таких решений есть Celery
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы