blob: b5c0d38cc0d9cd8f29b8c529194f255ad6e1fa27 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
|
"""
A model for a file downloader: Synchronous, Threaded and Asynchronous.
"""
import os, sys, cmd, time, threading
from ms.debug_utils import TkWindow
from ms.async_utils import MultiIter, run_iter
from twisted.internet import reactor
from downloader1 import Downloader
class AsynchronousDownloader(Downloader):
"Twisted based."
mi = MultiIter()
def postloop(self):
reactor.stop()
while reactor.running: pass # until the stop message is received
Downloader.postloop(self)
def do_download(self, arg):
self.mi.append(self.download(arg))
def download(self, fname):
self.out.write("BEGIN %s" % fname)
for line in file(fname):
time.sleep(.1)
self.out.write(".")
yield None
self.out.write(" END %s\n" % fname)
def ended(_):
print _, "ended"
#d.out.close()
if __name__ == "__main__":
d = AsynchronousDownloader()
threading.Thread(None, d.cmdloop).start()
run_iter(d.mi, reactor.callLater, 0)
reactor.run()
|