Pycurl и io.StringIO - pycurl.error: (23, «Ошибка написания тела»)

Я портирую ebay sdk на python3 и наткнулся на следующую проблему.

Я использую Pycurl для отправки некоторых HTTP-запросов. Вот как я это настраиваю:

    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)

и это работает. Я пытался проделать тот же трюк с лямбдами (вместо определения этих неловких функций, но это не сработало).

Ответы на вопрос(1)

Ваш ответ на вопрос