Може ли django да поддържа кодиране на прехвърляне на части (в http push заявка) като цяло и когато е разгърнато на heroku?

Имаме уеб приложение, написано на django, разгърнато на heroku. Едно от нашите изисквания е да получим XML от външен източник, който се изпраща към нашия домейн. XML от външния източник се изпраща периодично към URL с помощта на http push заявка, която използва кодиране на прехвърляне на части. Когато насочената заявка пристигне до django обаче, request.body е празно! Тествайки това, опитахме да изпратим същата точна заявка, със и без „Transfer-encoding=chunked“ в заглавката. Тялото на заявката съдържа XML, когато не се използва chunked, и е празно, когато се използва chunked.

От гледане в мрежата изглежда, че django не поддържа push заявки, които използват кодиране на прехвърляне на части. Това е доста странно. Изглежда, че нищо, което използва WSGI в python, не прави?

Въпреки това не виждам решение или дори дискусия за това, когато използвам heroku. Някой има ли опит с това? Някаква помощ или идеи какво може да се направи? Има ли някакъв флаг, който казва на heroku да обработва кодиране на прехвърляне на парчета?

Единственото решение, което виждам в момента, е да настроя различно приложение с рамка, която поддържа прехвърляне на парчета, или да стартираме наш собствен уеб сървър, който ще създава неразделени заявки от разделените заявки и ще го пренасочва към нашето приложение.


person Omer    schedule 10.12.2013    source източник
comment
Вижте дублирания въпрос. В крайна сметка - chunked е възможно, но не под WSGI.   -  person Yuval Adam    schedule 11.12.2013
comment
Разгледах този отговор, но той се фокусира най-вече върху apache mod_wsgi за django. Говорех за внедряване на heroku. От този отговор обаче може да се намери хакнато решение. Наистина трябва да получите полето wsgi_input от environ[wsgi.input] и да използвате .read() върху него. След това можете да поставите резултата в requst.body или да замените самото поле wsgi.input с поток. Това обаче е хакерско решение, което зависи от средата, в която разгръщате кода си (работи различно на localhost django например)   -  person Omer    schedule 11.12.2013