diff options
| author | schneefux <schneefux+commit@schneefux.xyz> | 2017-03-11 12:25:27 +0100 |
|---|---|---|
| committer | schneefux <schneefux+commit@schneefux.xyz> | 2017-03-11 12:25:27 +0100 |
| commit | 42d85b580c9cd1a0b4a8dbd453b67e6e4ccedb1a (patch) | |
| tree | 96ab08291db31eb7e15e31f8ec27d2e3aa23ed62 /api.py | |
| parent | ffb51c6327c9000a15d42d9101d0f10976c686d5 (diff) | |
| download | shrinker-42d85b580c9cd1a0b4a8dbd453b67e6e4ccedb1a.tar.gz shrinker-42d85b580c9cd1a0b4a8dbd453b67e6e4ccedb1a.zip | |
don't add duplicates or unnecessary preload jobs
Diffstat (limited to 'api.py')
| -rw-r--r-- | api.py | 22 |
1 files changed, 16 insertions, 6 deletions
@@ -2,6 +2,7 @@ import asyncio import os +import datetime import glob import logging import asyncpg @@ -71,7 +72,6 @@ class Processor(joblib.worker.Worker): self._priorities = [] self._compilejobs = [] self._analyzejobs = [] - self._preloadpriorities = [] self._preloads = [] async def _teardown(self, failed): @@ -96,14 +96,14 @@ class Processor(joblib.worker.Worker): "region": s[0], "params": { "filter[playerNames]": s[1], - "filter[createdAt-start]": date2iso(s[2]), + "filter[createdAt-start]": date2iso(s[2] + datetime.timedelta(seconds=1)), "filter[gameMode]": "casual,ranked" } } for s in self._preloads] await self._queue.request( jobtype="preload", payload=preloadjobs, - priority=self._preloadpriorities) + priority=[2]*len(preloadjobs)) async def _execute_job(self, jobid, payload, priority): """Finish a job.""" @@ -149,9 +149,19 @@ class Processor(joblib.worker.Worker): self._analyzejobs.append(payload) if lmcd is not None: - self._preloadpriorities.append(priority+1) - self._preloads.append((data["shard_id"], - data["name"], lmcd)) + now = datetime.datetime.now() + interval_mins = (now - lmcd).total_seconds()/60 + logging.debug("%s: minutes since last match: %s", + jobid, interval_mins) + if priority == 1 and interval_mins > 30: + # TODO move to config var ^ + # TODO + # only allowed 1 level by ToS + if data["name"] not in [p[1] for p in self._preloads]: + # prevent duplicates + # TODO also prevent across batches! + self._preloads.append((data["shard_id"], + data["name"], lmcd)) await self._deletematch.fetchrow(object_id) |
