저는 파이썬 requests
라이브러리를 사용하여 POST 요청을 보내고 있습니다. POST 데이터를 생성하는 프로그램 부분은 을 임의의 파일과 유사한 객체 (출력 스트림)에 쓸 수 있습니다.POST 데이터를 파이썬 요청으로 스트리밍하는 방법은 무엇입니까?
어떻게이 두 부분을 적합하게 만들 수 있습니까?
requests
이이 사용 사례에 대해 스트리밍 인터페이스를 제공 할 것으로 예상했지만, 그렇지 않은 것으로 보입니다. 이 인 파일과 유사한 객체를 data
인수로 받아들입니다. 내가 할 수있는 파일과 같은 객체를 제공하지 않습니다. 을 작성하십시오.
이것은 파이썬 HTTP 라이브러리의 근본적인 문제입니까?
아이디어 지금까지이 :
가장 간단한 해결책은 fork()
로하고 요청 라이브러리가 파이프 throgh POST 데이터 프로듀서와 통신 할 수 있도록하는 것 같다.
더 좋은 방법이 있습니까?
또는 POST 데이터 생성자를 복잡하게 만들 수 있습니다. 그러나 하나의 XML 스트림 (stdin)을 파싱하고 POST 데이터로 사용할 새 XML 스트림을 생성합니다. 그럼 난 반대의 동일한 문제가있다 : XML 시리얼 라이저 라이브러리 파일 형태의 객체에 쓰기, 나는 XML serializer가 파일 수있는 다른 객체를 제공 할 가능성을 전혀 모르고있다 .
또한 가장 깨끗하고 고전적인 해결책은 코 루틴 (coroutines)이며, 이는 파이썬에서 생성자 (yield
)를 통해 다소 사용할 수 있음을 알고 있습니다. POST 데이터는 파일과 같은 객체가 아닌 (yield
)을 통해 스트리밍되고 끌어 오기 구문 분석기를 사용할 수 있습니다.
그러나 requests
에서 POST 데이터 반복자를 허용 할 수 있습니까? 그리고 yield
과 함께 사용할 수있는 XML 시리얼 라이저가 있습니까?
또는 파일과 유사한 객체로 작성기를 작성하거나 반복자를 래핑하는 파일과 같은 객체를 제공하는 래퍼 객체가 있습니까?
왜 제공 할 의무 _'requests'_한다 _ "파일 - 류 객체를 작성할 수있는 객체 "? _ 배경 모드가 아닌 전경에서 작동하도록 설계되었으므로 설명자를 제공하지 않고 수동으로 입력을 기다려야합니다. 필요한 경우, 'r, w = (os.fdopen (f, mode) for f, zip 모드 (os.pipe(), ("rb", "wb")와 같이 쉽게 제공 할 수 있습니다.))'- 그런 다음 두 부분을 별도의 스레드로 실행하십시오. –