मैं eyay sdk को python3 पर पोर्ट कर रहा हूं और मैंने निम्न समस्या पर ठोकर खाई है।पायकुरल और 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)')
जहां तक मुझे पता है इसका मतलब है एक मुद्दा है कि वहाँ लेखन समारोह के साथ, लेकिन मैं यह नहीं समझ सकता कि यह वास्तव में क्या है। स्ट्रिंगियो मॉड्यूल से io में माइग्रेशन से संबंधित हो सकता है, लेकिन मुझे यकीन नहीं है।
युपीडी: मैं निम्नलिखित की कोशिश की है:
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 –