Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(5)

Unified Diff: foo/server.py

Issue 1620043002: Add scripts for distillability modelling (Closed) Base URL: git@github.com:chromium/dom-distiller.git@master
Patch Set: set upstream patchset, identical to patch set 2 Created 4 years, 10 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « foo/server.conf ('k') | foo/test.css » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: foo/server.py
diff --git a/foo/server.py b/foo/server.py
deleted file mode 100644
index 1fcfc1dc0c973e576ca52eea20f82f2a65fe8534..0000000000000000000000000000000000000000
--- a/foo/server.py
+++ /dev/null
@@ -1,187 +0,0 @@
-import argparse
-import collections
-import cherrypy
-import json
-import os
-import time
-
-genDelta = [
- 0,
- 10,
- 100,
- 1000,
-]
-
-genCount = 4
-maxGenLength = 5
-
-def cleanGeneration(gen, delta):
- for i in range(len(gen) - 1):
- if gen[i + 1]['time'] - gen[i]['time'] < delta:
- e = gen.pop(i + 1)
- os.remove(e['path'])
- return None
- return gen.pop(0)
-
-
-def cleanUpArchives(archives):
- for i, gen in enumerate(archives):
- if len(gen) > maxGenLength:
- e = cleanGeneration(gen, genDelta[i])
- if e:
- if i + 1 < len(archives):
- archives[i + 1].append(e)
-
-def printArchives(archives):
- print '******'
- for i in archives:
- for e in i:
- print e['time']
- print ' -- '
-
-archiveIdx = 0
-def saveData(service):
- global archiveIdx
- archives = service.getArchives()
- lastGeneration = archives[0]
- lastSavedUpdate = -1
- if len(lastGeneration) > 0:
- lastSavedUpdate = lastGeneration[-1]['lastId']
- lastUpdate = service.getLastUpdateId()
- hasChanges = lastSavedUpdate < lastUpdate
-
- if not hasChanges:
- return
-
- timeFormat = '%Y-%m-%e-%H:%M:%S'
- currentTime = time.time()
- path = os.path.join(service.getArchivePath(), 'archive-%s.json' % time.strftime(timeFormat))
- with open(path, 'w') as outfile:
- json.dump(service.getData(), outfile)
- lastGeneration.append({
- 'lastId': lastUpdate,
- 'path': path,
- 'time': archiveIdx,
- 'realtime': currentTime,
- })
- archiveIdx += 1
-
- cleanUpArchives(service.getArchives())
-
-class Service(object):
- exposed = True
-
- def __init__(self, data_dir):
- self.data = None
- self.updates = collections.deque(maxlen=500)
- self.nextUpdateId = 0
- self.idxMap = None
- self.archive_path = os.path.join(data_dir, 'archive')
- if not os.path.exists(self.archive_path):
- os.makedirs(self.archive_path)
- with open(os.path.join(data_dir, 'index')) as inf:
- self.data = json.load(inf)
- self.initIdxMap()
-
- self.archives = []
- for i in range(genCount):
- self.archives.append([])
-
- self.saver = cherrypy.process.plugins.BackgroundTask(2.0 * 60, saveData, [self])
- self.saver.start()
-
- def initIdxMap(self):
- self.idxMap = dict()
- for i, entry in enumerate(self.data):
- self.idxMap[entry['url']] = i
-
- def getArchivePath(self):
- return self.archive_path
-
- def getArchives(self):
- return self.archives
-
- def getData(self):
- return self.data
-
- def getDataResponse(self):
- return {
- 'data': self.data,
- 'nextId': self.nextUpdateId,
- }
-
- def appendUpdate(self, entry, idx):
- self.updates.append({'index': idx, 'id': self.nextUpdateId, 'entry': entry})
- self.nextUpdateId += 1
-
- def update(self, entry):
- key = entry['url']
- idx = self.idxMap[key]
- self.data[idx] = entry
- self.appendUpdate(entry, idx)
- return 'sdf'
-
- @cherrypy.expose
- def getupdates(self, nextId):
- data = None
- updates = None
- nextId = int(nextId)
- newNextId = nextId
-
- if len(self.updates) > 0:
- lastId = self.updates[-1]['id']
- firstId = self.updates[0]['id']
- if firstId > nextId:
- data = self.data
- elif lastId >= nextId:
- updates = list(self.updates)[nextId - firstId:]
- newNextId = lastId + 1
- return json.dumps({'response': {
- 'data': data,
- 'updates': updates,
- 'nextId': newNextId,
- }})
-
-
- @cherrypy.expose
- def message(self):
- cl = cherrypy.request.headers['Content-Length']
- rawbody = cherrypy.request.body.read(int(cl))
- request = json.loads(rawbody)
- action = request['action']
- response = None
- if action == 'getData':
- response = self.getDataResponse()
- if action == 'update':
- response = self.update(request['data'])
- return json.dumps({'response': response})
-
- def getLastUpdateId(self):
- return self.nextUpdateId - 1
-
-
-
-if __name__ == '__main__':
- parser = argparse.ArgumentParser()
- parser.add_argument('--data-dir')
- options = parser.parse_args()
- service = Service(options.data_dir)
- conf = {
- 'global': {
- 'server.socket_host': '0.0.0.0',
- 'server.socket_port': 8081,
- },
- '/': {
- 'tools.response_headers.on': True,
- 'tools.response_headers.headers': [('Content-Type', 'text/plain')],
- },
- '/foo': {
- 'tools.staticdir.on': True,
- 'tools.staticdir.dir': '/usr/local/google/code/dom_distiller/foo',
- },
- '/images': {
- 'tools.staticdir.on': True,
- 'tools.staticdir.dir': os.path.join(os.getcwd(), options.data_dir),
- }
- }
- cherrypy.quickstart(service, '/', conf)
« no previous file with comments | « foo/server.conf ('k') | foo/test.css » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698