Ben python3 ebay sdk taşıyorum ve aşağıdaki konuya tökezledim.Pycurl ve io.StringIO - pycurl.error: (23, 'Yazılı yazı gövdesi)
Bazı HTTP istekleri göndermek için pycurl kullanıyorum. İşte Ben yapılandırmak nasıl:
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)
ben self._curl.perform() aşağıdaki hatayı alıyorum aradığında: Ben bu bir sorun olduğu anlamına gelir Bildiğim kadarıyla
pycurl.error: (23, 'Failed writing body (1457 != 1460)')
Yazma işleviyle, ama tam olarak ne olduğunu anlayamıyorum. StringIO modülünden io'ya geçişle ilgili olabilir, ancak emin değilim.
UPD: aşağıdaki denedim:
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)
ve çalışıyor. Lambdas ile aynı hile yapmaya çalıştım (bu garip fonksiyonu tanımlamak yerine, ama işe yaramadı.)
http://pycurl.sourceforge.net/doc/unicode.html#writing-to-stringio-bytesio –