chiark / gitweb /
Limit yoweb-scrape backlog parsing to 500K
[ypp-sc-tools.web-live.git] / yoweb-scrape
index 31c75ae9f0a3ad774b1e2d3b5475f159933da6f8..10cc734e2df672057d13952e63d00c721230b2e1 100755 (executable)
@@ -43,6 +43,7 @@ import re as regexp
 import random
 import curses
 import termios
+import random
 from optparse import OptionParser
 from StringIO import StringIO
 
@@ -142,12 +143,14 @@ class Fetcher:
                min_age = 1
                need_wait = 0
                for age in ages:
-                       if age < min_age and age < 300:
+                       if age < min_age and age <= 5:
                                debug('Fetcher   morewait min=%d age=%d' %
                                        (min_age, age))
                                need_wait = max(need_wait, min_age - age)
                        min_age += 3
                        min_age *= 1.25
+               if need_wait > 0:
+                       need_wait += random.random() - 0.5
                return need_wait
 
        def _rate_limit_cache_clean(self, now):
@@ -476,7 +479,7 @@ class PirateAboard:
                                return pa.pi
                        debug('PirateAboard refresh %d > %d  %s' % (
                                age, guide, pa.name))
-                       imaginary = [2,6]
+                       imaginary = [2,4]
                else:
                        imaginary = [1]
                wait = fetcher.need_wait(now, imaginary)
@@ -499,9 +502,15 @@ class ChatLogTracker:
                                # self._v = self._vl[self._vessel]
                self._date = None
                self._myself = myself_pi
-               self._f = file(logfn)
                self._lbuf = ''
-               self._progress = [0, os.fstat(self._f.fileno()).st_size]
+               self._f = file(logfn)
+               flen = os.fstat(self._f.fileno()).st_size
+               max_backlog = 500000
+               if flen > max_backlog:
+                       startpos = flen - max_backlog
+                       self._f.seek(startpos)
+                       self._f.readline()
+               self._progress = [0, flen - self._f.tell()]
                self._disembark_myself()
                self._need_redisplay = False
                self._lastvessel = None
@@ -971,7 +980,7 @@ def do_track_chat_log(args, bu):
                track.catchup()
                if track.changed():
                        print track
-               sleep(1)
+               sleep(0.5 + 0.5 * random.random())
 
 #----- ship management aid -----