Плохой запрос Django выгрузка CSV по кускам
Я пытаюсь загрузить csv в конечную точку, используя Django. Этот csv не связан ни с какой моделью, он нужен только для запуска задачи celery.
Дело в том, что я получаю Bad Request и django не предоставляет мне никакой дополнительной информации.
Загрузка файла должна осуществляться частями, и код для загрузки следующий с использованием библиотеки запросов python
import os
import requests
import pdb
def read_in_chunks(file_object, chunk_size=1024):
while True:
data = file_object.read(chunk_size)
if not data:
break
yield data
def main(file, URL):
content_name = str(file)
content_path = os.path.abspath(file)
content_size = str(os.stat(content_path).st_size)
f = open(content_path)
index = 0
offset = 0
headers = {}
for chunk in read_in_chunks(f):
offset = index + len(chunk)
headers['Content-Type'] = 'application/octet-stream'
headers['Content-length'] = content_size
headers['Content-Range'] = 'bytes %s-%s/%s' % (index, offset, content_size)
index = offset
file = {"file": chunk}
try:
r = requests.put(url, files=file, headers=headers)
except Exception as e:
print(str(e))
if __name__ == '__main__':
url = 'http://127.0.0.1:8000/task/upload'
main('test_upload.csv', URL)
И выполняется следующим образом:
python3 test_upload.py
Вот вид:
class TaskUploadView(APIView):
def put(self, request):
## NOT TESTED CODE, SINCE IT DOES NOT REACH THIS POINT
parser_classes = (FileUploadParser,)
f = request.FILES['file']
with open('test.csv', 'wb+') as destination:
for chunk in f.chunks():
destination.write(chunk)
return Response({"message": "Uploaded!"})
И всегда я получаю это в логах, но больше ничего...
Неправильный запрос: /task/upload "PUT /task/upload HTTP/1.1" 400 109
>
Другие конечные точки работают нормально, поэтому я не знаю, что может происходить.
Есть идеи, почему плохой запрос?