[Twisted-web] Stopping an HTTPDownloader

John Morrissey jwm at horde.net
Thu Apr 3 11:39:51 EDT 2008


I'm writing a small script to record an MP3 stream. It connects to a remote
host and accepts start/stop commands to control the recording.

Everything's working, except I can't figure out how to stop the
HTTPDownloader. When I try to close the HTTP download connection (line 22,
below), self.stream_factory.protocol (which is an HTTPPageDownloader) has a
None transport member.

Am I going about this the right way?

john


01 def start_stream_download(url):
02 	scheme, host, port, path = client._parse(url)
03 	factory = client.HTTPDownloader(url, 'foo.mp3')
04 	reactor.connectTCP(host, port, factory)
05 	return factory
06 
07 class GpioClient(protocol.Protocol):
08 	stream_factory = None
09 
10	def connectionMade(self):
11		self.transport.write('ADD GPO\n')
12	
13	def dataReceived(self, data):
14		data = data.rstrip()
15		if re.match(r'^GPO %d [lL]' % GPO_CHANNEL, data):
16			if self.stream_factory:
17				self.stream_factory.protocol.transport.loseConnection()
18			self.stream_factory = start_stream_download(STREAM_URL)
19		elif re.match(r'^GPO %d [hH]' % GPO_CHANNEL, data):
20			if self.stream_factory:
21				# Stop recording.
22				self.stream_factory.protocol.transport.loseConnection()
23				self.stream_factory = None

-- 
John Morrissey          _o            /\         ----  __o
jwm at horde.net        _-< \_          /  \       ----  <  \,
www.horde.net/    __(_)/_(_)________/    \_______(_) /_(_)__



More information about the Twisted-web mailing list