Django зависает при чтении данных из request.body

Допустим, у нас есть простое представление Django:

def my_view(request):
    content = request.body
    # some actions with content varible
    response = HttpResponse('<h1>It work!</h1>')

А простой api клиент, допустим, основанный на библиотеке requests, отправляет неверно сформированные данные представления Django:

headers = dict()
headers['Accept'] = '*/*'
headers['Content-Length'] = '13409'
headers['Content-Type'] = 'application/x-compressed'
headers['Expect'] = '100-continue'
headers['Host'] = '127.0.0.1:8000'
headers['User-Agent'] = 'Api client'
headers['content-encoding'] = 'gzip'

url = 'http://127.0.0.1:8000/api'

request_body = ''
r = requests.post(
    url,
    data=request_body,
    headers=headers
)

Как видите, request_body содержит пустую строку, но в заголовке Content-Length хранится значение 13409. Когда приходит такой запрос, Django зависает на строке, читающей request.body. Никаких исключений не происходит. Как решить эту проблему? Я не могу повлиять на клиента, поэтому единственное, что я могу сделать - это переписать представление Django. Используется Django версии 3.2.15.

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