Здравствуйте, столкнулся с очень странной проблемой. Делаю выгрузку с 1С. И заметил, что иногда почему-то не догружается файл на сервер Django. начала копать, поставил Charly для просмотра посылаемых пакетов. И увидел, что Djnago закрывает соединение.
Из-за этого, конечно, работать с эти файлами нельзя.
Начал копать в чем может быть проблема. Игрался, и с DATA_UPLOAD_MAX_MEMORY_SIZE, и делал len(request.body). Ничего не помогало, хаотично Django закрывал соединение. Брандмауэр тоже отключал. Мне подкинули мысль отключать постепенно Middleware. И о чудо, все начало отправляться.
В итоге это оказался CommonMiddleware.
Дальше я попытался найти место, которое именно дает ошибку. И вроде нашел.
Если поставить reture responce перед этим блоком, то все будет работать хорошо.
Но почему именно из-за этого места появляется отключения не пойму. 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)