- 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:
@@ -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
|
||||
|
||||
|
||||
@@ -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
@@ -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:
|
||||
|
||||
@@ -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']
|
||||
|
||||
Reference in New Issue
Block a user