Почему поле сессии не удаляется в событии django Server sent?

class task_check(AuthententicatedOrReadOnlyAPIView):
content_negotiation_class = IgnoreClientContentNegotiation

def get(self, request):
    timeout = int(request.query_params.get('timeout', 300))

    task_id = request.session.get('pending_task_id')
    if not task_id:
        return HttpResponse("No pending task", status=404)

    def event_stream():
        start_time = time.time()
        while True:
            if time.time() - start_time > timeout:
                del request.session['pending_task_id']
                request.session.modified = True
                yield f"data: {json.dumps({'status': 'TIMEOUT'})}\n\n"
                break
            event_task_id = request.session.get('pending_task_id')
            if not event_task_id:
                yield f"data: {json.dumps({'status': 'TIMEOUT'})}\n\n"
            task = AsyncResult(event_task_id)
            if task.ready():
                del request.session['pending_task_id']
                request.session.modified = True
                yield f"data: {json.dumps({'status': 'DONE'})}\n\n"
                break
            else:
                yield f"data: {json.dumps({'status': 'PENDING'})}\n\n"
            time.sleep(5)  # Check every 5 seconds

    response = StreamingHttpResponse(event_stream(), content_type='text/event-stream')
    response['Cache-Control'] = 'no-cache'
    response['X-Accel-Buffering'] = 'no'
    return response

Теперь этот код внутри event_stream по какой-то причине не удаляет pending_task_id, эти строки выполняются в соответствии с логикой без ошибок и предупреждений, но при следующем вызове get из task_check поле сессии pending_task id остается таким, какое оно есть

Вернуться на верх