Взаимодействие Ajax / Redis в Django

У меня есть Django приложение с длинным вычислением. Чтобы предотвратить таймауты, я запускаю вычисления, используя ThreadPool, а затем пишу сообщение в Redis, когда вычисления завершены.

В моем view.py есть маршрут, который получает вызов ajax и затем делает следующее:

  1. if the user has not requested the dataframe yet, do nothing

  2. if the user has requested the dataframe:

a) проверить, готов ли еще датафрейм. Если нет, выведите сообщение "вычисление...".

b) если он готов, верните dataframe в ajax.

Вот мой код, который правильно запускается ajax при начальной загрузке страницы:

def is_ajax(request):
    return request.META.get('HTTP_X_REQUESTED_WITH') == 'XMLHttpRequest'


@login_required()
def retrieveAsync(request):
    if is_ajax(request=request) and request.method == "GET":
        show_df = request.session['win_deep_show_df']
        if show_df == False:
            # user has not requested the dataframe info yet...do nothing
            return JsonResponse({"still_waiting": True}, status=200)
        elif show_df == True:
            redisChannel = request.session['win_deep_redis_channel']
            # check redis
            # if calculation is not complete, write a "loading message..."
            # wait 5 seconds, check if it is complete again:
            # when calculation is complete, extract the df_to_html from redis and return the df_to_html output to ajax for display
    return JsonResponse({}, status=400)

Моя проблема заключается в коде ajax в моем html-коде. Я знаю, что сейчас он "работает" нормально, потому что срабатывает остановка в моем view.py. В настоящее время, вместо того, чтобы "ничего не делать", моя веб-страница отображает окно сообщения [Object Object] (когда я хочу, чтобы она "ничего не делала) и просто ждала действия запроса (которым я управляю через мое представление). Я заменю alert(data) своим кодом сообщения о загрузке и кодом отображения фрейма данных, когда разберусь с проблемой статуса и "ничего не делать"

        <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.5.1/jquery.min.js"></script>
        <script type="text/javascript">
        $(document).ready(function() {
            $.ajax({
            url: '/clashstats/win_deep/get_ajax/',
            type: 'get', 
            still_waiting: function(data) {

            },
            success: function(data) {
                alert(data);
            },
            failure: function(data) {

            }
            });
            });

        </script>
Вернуться на верх