Django - Ajax HttpResponse delay - PullRequest
       11

Django - Ajax HttpResponse delay

2 голосов
/ 06 сентября 2010

У меня есть функция просмотра django, которая вызывает другую функцию, если условие истинно, функция вызывается как отдельный процесс, представление возвращает переменную состояния, которая показывает, была ли функция вызвана или нет, статус возвращаетсяСобытие щелчка ajax, назначенное кнопке.
Проблема в том, что при выполнении функции do_work функция успеха ajax не запускается до тех пор, пока не завершится do_work.

просмотр функции / update /

if condition:
        p = Process(target=do_work, args(pack,))
        p.daemon = True
        p.start()
        success = "True"
else:
        success = "False"
print success
return HttpResponse(success)

Ajax-вызов

 $('button.update').click(function() {
                id = $(this).attr('id');
                $.post("/update/", {
                pack : id,
                }, function(result){
                    alert(result);
                    });
                return false;
                });

«успех печати» выполняется сразу в обоих случаях, но предупреждение не появляется до тех пор, пока функция do_woks не завершится

1 Ответ

1 голос
/ 06 сентября 2010

Хотя вы видите напечатанное сообщение перед return HttpResponse(success), этот оператор возврата сам по себе не может асинхронно завершить ответ.

Предположительно, после того, как эта функция вернется, ваш веб-сервер все еще ожидает чего-то другогопроизойдет (например, для завершения всех дочерних процессов) до завершения ответа.

Для асинхронных задач в Django я настоятельно рекомендую Celery .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...