- added packages download speed limiting support

git-svn-id: http://svn.sabayonlinux.org/projects/entropy/trunk@1116 cd1c1023-2f26-0410-ae45-c471fc1f0318
This commit is contained in:
(no author)
2008-02-01 19:29:50 +00:00
parent 1b095d3230
commit b291cbdbc2
4 changed files with 37 additions and 19 deletions
+1 -4
View File
@@ -1,6 +1,4 @@
TODO list:
- add speed limiter
- make use flags check optional and controlled by a config option
- rethink portage bashrc script
- split RDEPEND and PDEPEND
- migrate server code to ServerInterface
@@ -12,9 +10,8 @@ TODO list:
- complete reagent spm interface
Spritz:
- handle queue dependencies in the queue tab too (*)
- handle config files updates interface (*)
- add masking interface
- add masking interface (*)
- add branch switching menu (for upgrades)
- wrap root password request
+11
View File
@@ -60,3 +60,14 @@ officialrepositoryid|sabayonlinux.org
# conntestlink|<connection test url>
#
conntestlink|http://svn.sabayonlinux.org
#
# syntax for downloadspeedlimit:
#
# downloadspeedlimit: If you need a way to limit download speed, this is the option you were looking for
# downloadspeedlimit|<maximum allowed speed in kb/sec>
#
# example:
# downloadspeedlimit|30
#
# downloadspeedlimit|
+15 -14
View File
@@ -25,6 +25,7 @@ import commands
import urllib2
import socket
import random
import time
from entropyConstants import *
from outputTools import *
import exceptionTools
@@ -2671,7 +2672,6 @@ class PackageInterface:
header = red(" *** ")
)
self.Entropy.entropyTools.ebeep(10)
import time
time.sleep(20)
os.remove(rootdir)
@@ -2809,7 +2809,6 @@ class PackageInterface:
header = red(" *** ")
)
self.Entropy.entropyTools.ebeep(10)
import time
time.sleep(20)
try:
shutil.rmtree(tofile, True)
@@ -4306,17 +4305,17 @@ class urlFetcher:
self.time_remaining = "(infinite)"
self.elapsed = 0.0
self.updatestep = 0.2
self.speedlimit = etpConst['downloadspeedlimit'] # kbytes/sec
self.transferpollingtime = float(1)/4
def download(self):
self.initVars()
if self.showSpeed:
self.speedUpdater = self.entropyTools.TimeScheduled(
self.updateSpeedInfo,
self.transferpollingtime
)
self.speedUpdater.setName("download::"+self.url+str(random.random())) # set unique ID to thread, hopefully
self.speedUpdater.start()
self.speedUpdater = self.entropyTools.TimeScheduled(
self.updateSpeedInfo,
self.transferpollingtime
)
self.speedUpdater.setName("download::"+self.url+str(random.random())) # set unique ID to thread, hopefully
self.speedUpdater.start()
# set timeout
socket.setdefaulttimeout(20)
@@ -4383,6 +4382,11 @@ class urlFetcher:
self.commitData(rsx)
if self.showSpeed:
self.updateProgress()
if self.speedlimit:
while self.datatransfer > self.speedlimit*1024:
time.sleep(0.1)
if self.showSpeed:
self.updateProgress()
# kill thread
self.close()
@@ -4445,8 +4449,7 @@ class urlFetcher:
self.remotefile.close()
except:
pass
if self.showSpeed:
self.speedUpdater.kill()
self.speedUpdater.kill()
socket.setdefaulttimeout(2)
def updateSpeedInfo(self):
@@ -4474,8 +4477,6 @@ class rssFeed:
self.items = {}
self.itemscounter = 0
self.maxentries = maxentries
import time
self.time = time
from xml.dom import minidom
self.minidom = minidom
@@ -4537,7 +4538,7 @@ class rssFeed:
self.itemscounter += 1
self.items[self.itemscounter] = {}
self.items[self.itemscounter]['title'] = title
self.items[self.itemscounter]['pubDate'] = self.time.strftime("%a, %d %b %Y %X +0000")
self.items[self.itemscounter]['pubDate'] = time.strftime("%a, %d %b %Y %X +0000")
self.items[self.itemscounter]['description'] = description
self.items[self.itemscounter]['link'] = link
if link:
+10 -1
View File
@@ -647,6 +647,8 @@ def initConfig_entropyConstants(rootdir):
'verbose_cmd': "--verbose"
},
'downloadspeedlimit': None, # equo packages download speed limit (in kb/sec)
'dumpstoragedir': ETP_DIR+ETP_CACHESDIR, # data storage directory, useful to speed up equo across multiple issued commands
# packages keywords/mask/unmask settings
@@ -675,7 +677,7 @@ def initConfig_entropyConstants(rootdir):
f = open(ETP_REVISION_FILE,"r")
myrev = f.readline().strip()
etpConst['entropyversion'] = myrev
# handle pid file
piddir = os.path.dirname(etpConst['pidfile'])
if not os.path.exists(piddir):
@@ -862,6 +864,13 @@ def initConfig_entropyConstants(rootdir):
conntestlink = line.split("|")[1]
etpConst['conntestlink'] = conntestlink
elif (line.find("downloadspeedlimit|") != -1) and (not line.startswith("#")) and (len(line.split("|")) == 2):
try:
etpConst['downloadspeedlimit'] = int(line.split("|")[1])
except:
etpConst['downloadspeedlimit'] = None
# align etpConst['binaryurirelativepath'] and etpConst['etpurirelativepath'] with etpConst['product']
etpConst['binaryurirelativepath'] = etpConst['product']+"/"+etpConst['binaryurirelativepath']
etpConst['etpurirelativepath'] = etpConst['product']+"/"+etpConst['etpurirelativepath']