Задать вопрос

Django из-за CommonMiddleware обрывается соединение?

Здравствуйте, столкнулся с очень странной проблемой. Делаю выгрузку с 1С. И заметил, что иногда почему-то не догружается файл на сервер Django. начала копать, поставил Charly для просмотра посылаемых пакетов. И увидел, что Djnago закрывает соединение.
5b9a49da0c437379005918.png
Из-за этого, конечно, работать с эти файлами нельзя.
Начал копать в чем может быть проблема. Игрался, и с DATA_UPLOAD_MAX_MEMORY_SIZE, и делал len(request.body). Ничего не помогало, хаотично Django закрывал соединение. Брандмауэр тоже отключал. Мне подкинули мысль отключать постепенно Middleware. И о чудо, все начало отправляться.
5b9a4adbd1d76754012426.png

В итоге это оказался CommonMiddleware.
5b9a4b05ba28e000384612.png

Дальше я попытался найти место, которое именно дает ошибку. И вроде нашел.
5b9a4b7f42f0d486068711.png

Если поставить reture responce перед этим блоком, то все будет работать хорошо.
5b9a4be8b8352026738813.png

Но почему именно из-за этого места появляется отключения не пойму. Breakpoint не помогли, через них проходит и закрывает соединение. Помогите, пожалуйста, уже не знаю, что делать. Спасибо!

Код view:
class Exchange(View):
    def get(self, request):
        request_type = request.GET['type']
        request_mode = request.GET['mode']

        if request_type in ('catalog', 'sale') and request_mode == 'checkauth':
            response = HttpResponse()
            response.write('success\n')
            response.write('sessionid\n')
            response.write('123456789')

            return response

        if request_type in ('catalog', 'sale') and request_mode == 'init':
            response = HttpResponse()
            response.write('zip=no\n')
            response.write(f'file_limit={settings.DATA_UPLOAD_MAX_MEMORY_SIZE}')

            return response

        if request_type == 'catalog' and request_mode == 'import':
            return HttpResponse('success')

        return HttpResponse('failure')

    def post(self, request):
        len(request.body)

        return HttpResponse('success')

    @method_decorator(csrf_exempt)
    def dispatch(self, request, *args, **kwargs):
        return super().dispatch(request, *args, **kwargs)
  • Вопрос задан
  • 92 просмотра
Подписаться 1 Простой 2 комментария
Пригласить эксперта
Ваш ответ на вопрос

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

Похожие вопросы