Есть у меня два сервиса, который разнесены. На один сервис заливают надцать файлов одним скопом, потом эти файлы сохраняются в темпе и при помощи python-requests
отправляются на другой сервер.
вот строчка, которая отправляет собственно файлы:
r = requests.post('%s%s' % (self.HOST, url), headers = {"Authorization": token_line}, data=args, files=send_files, timeout=1800)
на другом сервере, при помощи rest_framework должно сохранятся и для этого написано вот такое чудо:
def handle_uploaded_file(path, f):
if path and f:
fl = '/some/path/%s/%s' % (path, f.name)
destination = open(fl, 'wb+')
for chunk in f.chunks():
destination.write(chunk)
destination.close()
return fl
else:
return False
@api_view(['POST',])
@permission_classes((IsAuthenticated,))
def files_save(request, format=None):
path = request.POST.get('pipeline_path', None)
logger.error(request.FILES)
if path:
for fl in request.FILES:
handle_uploaded_file(path, request.FILES.get(fl, None))
response = [{"Exception": {"id": "-1"}}, {"success": True}]
else:
response = False
return pipeline_response(response)
так же, временно, для логирования есть вот такое чудо:
middleware
:
# -*- coding: utf-8 -*-
import logging
import re
from django.http import HttpResponseRedirect
logger = logging.getLogger(__name__)
class CurrentMetaMiddleware(object):
def process_request(self, request):
if request.path == '/oauth2/access_token/':
return None
logger.error(request.path) #Это работает
# а дальше уже нет!
if request.method == 'POST':
logger.error('POST: %s' % request.POST)
if request.method == 'GET':
logger.error('GET: %s' % request.GET)
return None
в сеттингах, в MIDDLEWARE_CLASSES оно прописано самым самым первым
так вот, когда запрос реально большой... порядка гигабайта, тогда эта вся фигня доходит до проверки метода которым прислали и.... виснет на минут 5-6... а потом беззвучно вываливается с ошибкой 403. все. До вьюхи оно даже не доходит... ниодного лога нет из вьюхи..
у кого какие идеи есть?
вся эта джигурда на меньших размерах вполне норм работает...