大量のデータを書き込み関数(CURLOPT_WRITEFUNCTION)に出力するPythonのcurlリクエストがあります。一定の条件が満たされた場合に、writefunctionからのcurlリクエストをキャンセルできるようにしたい。ch.close()を使用してみましたが、実行中にリクエストを閉じることができないというエラーが表示されます。書き込み関数から停止させる他の方法はありますか?これが私のコードです:
self.ch = pycurl.Curl()
self.ch.setopt(pycurl.URL, file_url)
self.ch.setopt(pycurl.CONNECTTIMEOUT, 60)
self.ch.setopt(pycurl.WRITEFUNCTION, self.WriteWrapper)
self.ch.setopt(pycurl.HEADERFUNCTION, self.ParseHeaders)
self.ch.setopt(pycurl.FOLLOWLOCATION, True)
self.ch.setopt(pycurl.COOKIE, cookies[file_host])
self.ch.setopt(pycurl.HTTPHEADER, self.headers_received)
self.ch.perform()
self.ch.close()
def do_POST(self):
return self.do_GET()
def WriteWrapper(self, data):
if self.do_curl_request:
try:
return self.wfile.write(data)
except:
self.ch.close() # This doesn't work :(