KnowledgeHub
Questions
Tags
Users
Search
Alex Rivera
|
Logout
Edit Question
Title
Body
I'm trying to set speed limits on downloading/uploading files and found that twisted provides twisted.protocols.policies.ThrottlingFactory to handle this job, but I can't get it right. I set readLimit and writeLimit , but file is still downloading on a maximum speed. What am I doing wrong? from twisted.protocols.basic import FileSender from twisted.protocols.policies import ThrottlingFactory from twisted.web import server, resource from twisted.internet import reactor import os class DownloadPage(resource.Resource): isLeaf = True def __init__(self, producer): self.producer = producer def render(self, request): size = os.stat(somefile).st_size request.setHeader('Content-Type', 'application/octet-stream') request.setHeader('Content-Length', size) request.setHeader('Content-Disposition', 'attachment; filename="' + somefile + '"') request.setHeader('Accept-Ranges', 'bytes') fp = open(somefile, 'rb') d = self.producer.beginFileTransfer(fp, request) def err(error): print "error %s", error def cbFinished(ignored): fp.close() request.finish() d.addErrback(err).addCallback(cbFinished) return server.NOT_DONE_YET producer = FileSender() root_resource = resource.Resource() root_resource.putChild('download', DownloadPage(producer)) site = server.Site(root_resource) tsite = ThrottlingFactory(site, readLimit=10000, writeLimit=10000) tsite.protocol.producer = producer reactor.listenTCP(8080, tsite) reactor.run() UPDATE So sometime after I run it: 2012-10-25 09:17:03+0600 [-] Unhandled Error Traceback (most recent call last): File "/home/chambylov/environments/transfer/local/lib/p
Tags (comma-separated)
Save Edits
Cancel