[python] downloadsnelheid usenetclient limiteren

Pagina: 1
Acties:

  • Quadro!
  • Registratie: Maart 2004
  • Laatst online: 05-04 11:15
Ik ben van plan om een usenet client te proggen/scripten in python voor linux en tijdens het plannen van het projectje bedacht ik dat het erg handig zou zijn als ik de snelheid zou kunnen limiteren. Dus ik ging op zoek naar een manier om dat mogelijk te maken, maar na een klein uurtje zoeken heb ik nog niet iets gevonden wat mij beviel en mijn vraag is nu dus:

Weet iemand een manier om (intern) in python de snelheid te regelen waarmee ik data binnenhaal.

Verwijderd

Dat hangt er natuurlijk vanaf hoe je je data binnenhaalt. Kort gezegd: over het algemeen kan je bij elke socket library een maximum aan te lezen bytes aangeven. Reken uit hoeveel bytes per seconde je maximaal wil binnenhalen, en lees elke seconde zoveel bytes uit :) (timertje gebruiken). Maar als we weten of je socket, asyncore, Twisted, etc. gebruikt, kunnen we je misschien beter helpen.

  • Tele
  • Registratie: November 2000
  • Niet online
Je zou kunnen kijken bij zo'n prog, hoe ze het daar doen; http://sourceforge.net/projects/sabnzbd/

  • Quadro!
  • Registratie: Maart 2004
  • Laatst online: 05-04 11:15
Python heeft een ingebouwde nntplib, welke ik ook van plan was te gebruiken om articles binnen te halen. Verder zal ik die source van SABnzbd ff doornemen. Done.. :)

Gevonden waar ik naar zocht, dit stukje code doet ongeveer wat _J_R_R zei. Ty anyway _/-\o_

Python:
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
    def gen_sleep_time(self):
        bps = 0
        for tup in self.recvd_list[:]:
            if (time.time() - tup[0]) > 1:
                self.recvd_list.remove(tup)
            else:
                bps += tup[1]
        if bps > self.bandwith_limit:
            x = float(self.bandwith_limit) / float(bps)
            if x < 0.65:
                precision = 0.001
            else:
                precision = 0.0001
                
            if self.last_sleep_time < 0.9:
                self.last_sleep_time += precision
        else:
            x = float(bps) / float(self.bandwith_limit)
            if x < 0.65:
                precision = 0.001
            else:
                precision = 0.0001
                
            if self.last_sleep_time > 0.0:
                self.last_sleep_time -= precision

[ Voor 81% gewijzigd door Quadro! op 13-02-2006 21:53 ]