저는 ebay sdk를 python3으로 이식하고 있는데 다음 문제를 발견했습니다.Pycurl 및 io.StringIO - pycurl.error : (23, '본문 작성 실패)
일부 HTTP 요청을 보내려면 pycurl을 사용하고 있습니다. 여기 내가 그것을 구성하는 방법입니다 :
self._curl = pycurl.Curl()
self._curl.setopt(pycurl.FOLLOWLOCATION, 1)
self._curl.setopt(pycurl.URL, str(request_url))
self._curl.setopt(pycurl.SSL_VERIFYPEER, 0)
self._response_header = io.StringIO()
self._response_body = io.StringIO()
self._curl.setopt(pycurl.CONNECTTIMEOUT, self.timeout)
self._curl.setopt(pycurl.TIMEOUT, self.timeout)
self._curl.setopt(pycurl.HEADERFUNCTION, self._response_header.write)
self._curl.setopt(pycurl.WRITEFUNCTION, self._response_body.write)
나는 self._curl.perform() 나는 다음과 같은 오류 얻을 호출 할 때 :이 문제가 있음을 의미 알고 지금까지
pycurl.error: (23, 'Failed writing body (1457 != 1460)')
을 쓰기 기능과 함께,하지만 정확히 무엇인지 알아낼 수 없습니다. StringIO 모듈에서 io 로의 마이그레이션과 관련이있을 수 있지만 확실하지 않습니다.
UPD : 나는 다음 시도했다 :
def body(buf):
self._response_body.write(buf)
def header(buf):
self._response_header.write(buf)
self._curl.setopt(pycurl.HEADERFUNCTION, header)
self._curl.setopt(pycurl.WRITEFUNCTION, body)
을하고 그것을 작동합니다. 난 그 멍청한 기능을 정의하는 대신 람다와 같은 트릭을하려했지만 작동하지 않았다.
http://pycurl.sourceforge.net/doc/unicode.html#writing-to-stringio-bytesio –