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)
そしてそれは動作します。ラムダで同じトリックを実行しようとしました (これらの厄介な関数を定義する代わりに、うまくいきませんでした.