Django Azure rest framework вызывает 500 ошибку сервера

У меня есть приложение django, которое отлично работает локально, но при развертывании на службе приложений azure я получаю ошибку 500 при запросе данных. Приложение развернуто в контейнере docker на службе azure app service:

URLs.py

 path('primaryexams/', TemplateView.as_view(template_name='xxxDB/primaryexams.html'), name='primaryExams'),
path('primaryexamsdata/', views.PrimaryExamsView.as_view(), name='primaryexam_data'),

views.py

class PrimaryExamsView(generics.ListAPIView):
    serializer_class = PrimaryExamSerializer
    template_name='xxxDB/primaryexams.html'

def get_queryset(self):
    return xxxPrimaryExamData.objects.all()

def filter_for_datatable(self, queryset):
    # filtering
    search_query = self.request.query_params.get('search[value]')
    if search_query:
        lookups = Q(xxxid__first_name__icontains=search_query)|Q(xxxid__last_name__icontains=search_query)|Q(xxxid__xx_id__icontains=search_query)
        queryset = xxxPrimaryExamData.objects.filter(lookups)
    
    return queryset

def list(self, request, *args, **kwargs):
    draw = request.query_params.get('draw')
    queryset = self.filter_queryset(self.get_queryset())
    recordsTotal = queryset.count()
    filtered_queryset = self.filter_for_datatable(queryset)

    try:
        start = int(request.query_params.get('start'))
    except (ValueError, TypeError):
        start = 0
    try:
        length = int(request.query_params.get('length'))
    except (ValueError, TypeError):
        length = 25
    end = length + start
    serializer = self.get_serializer(filtered_queryset[start:end], many=True)
    
    response = {
        'draw': draw,
        'recordsTotal': recordsTotal,
        'recordsFiltered': filtered_queryset.count(),
        'data': serializer.data,
    }
    return Response(response)    

serializers.py

class PrimaryExamSerializer(serializers.ModelSerializer):
    xxx_id = serializers.ReadOnlyField(source='xxxid.xxx_id')
    last_name = serializers.ReadOnlyField(source='xxxid.last_name')
    first_name = serializers.ReadOnlyField(source='xxxid.first_name')
    program_institution = serializers.ReadOnlyField(source='program_institution.institution_id')
    program_institution_name = serializers.ReadOnlyField(source='program_institution.institution_name')
    test_center_institution = serializers.ReadOnlyField(source='test_center_institution.institution_id', default='none')

class Meta:
    model = AbnsPrimaryExamData
    fields = (
        'id','xxx_id','last_name','first_name','medical_school','program_institution','program_institution_name','graduation_year','test_center_institution' 
    )

Когда я пытаюсь загрузить данные, я получаю ошибку ajax, и когда я смотрю на запрос, он получает ошибку сервера 500:

https://xxxinternal.azurewebsites.net/xxxDB/primaryexamsdata/?draw=1&columns%5B0%5D%...blah...blahh

У меня есть другие представления, настроенные таким же образом, которые работают просто отлично, но по какой-либо причине это представление выбрасывает эту ошибку и не отображает данные. Когда я копирую url и вставляю его в мою локальную версию, он отображает ответ просто отлично.

Оказалось, что моя проблема была связана с gunicorn внутри докера. Запуск докера локально также не дал результата, но это дало мне больше информации: Bad Request Строка запроса слишком велика (6060 > 4094)

установка --limit-request-line 8000 устранила проблему.

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