Я работаю над клиентом для веб-службы, использующей pycurl.Клиент открывает соединение с потоковым сервисом и порождает его в отдельный поток.Вот урезанная версия того, как устанавливается соединение:
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
Что, в некотором роде, имеет смысл, соединение постоянно открыто.Я охотился вокруг и, похоже, не могу найти способ обойти эту проблему и полностью закрыть соединение.