私はpycurlを使用してWebサービスのクライアントに取り組んでいます。クライアントはストリーム サービスへの接続を開き、それを別のスレッドに生成します。接続の設定方法を簡略化したバージョンを次に示します。
def _setup_connection(self):
self.conn = pycurl.Curl()
self.conn.setopt(pycurl.URL, FILTER_URL)
self.conn.setopt(pycurl.POST, 1)
.
.
.
self.conn.setopt(pycurl.HTTPHEADER, headers_list)
self.conn.setopt(pycurl.WRITEFUNCTION, self.local_callback)
def up(self):
if self.conn is None:
self._setup_connection()
self.perform()
さて、接続をシャットダウンしたいときは、
self.conn.close()
次の例外が発生します。
error: cannot invoke close() - perform() is currently running
これは、ある意味では理にかなっていますが、接続は常に開いています。私は探し回っていますが、この問題を回避して接続をきれいに閉じる方法を見つけることができないようです。