diff options
| author | schneefux <schneefux+github@schneefux.xyz> | 2017-03-05 10:36:38 +0100 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2017-03-05 10:36:38 +0100 |
| commit | b57c9a6f4e4572027aa2862bb684d6a0891ef801 (patch) | |
| tree | cd2ddb9fc25af6e1c1152308dba6f960fe934986 | |
| parent | b8ea5a875043fa3ab13c81187404c6a389213184 (diff) | |
| download | apigrabber-b57c9a6f4e4572027aa2862bb684d6a0891ef801.tar.gz apigrabber-b57c9a6f4e4572027aa2862bb684d6a0891ef801.zip | |
run jobs in batches (#57)
| -rw-r--r-- | api.py | 47 | ||||
| -rw-r--r-- | crawler.py | 1 | ||||
| m--------- | joblib | 0 |
3 files changed, 26 insertions, 22 deletions
@@ -50,33 +50,36 @@ class Apigrabber(joblib.worker.Worker): try: async for data in api.matches(region=payload["region"], params=payload["params"]): - matchids = await con.fetch(self._insertquery, json.dumps(data)) - logging.debug("%s: inserted %s matches from API into database", - jobid, len(matchids)) - for matchid in matchids: - await self._queue.request(jobtype="process", - priority=priority, - payload={ - "id": matchid["id"], - "playername": playername - }) + async with con.transaction(): + matchids = await con.fetch( + self._insertquery, json.dumps(data)) + logging.debug("%s: inserted %s matches from API into database", + jobid, len(matchids)) + payloads = [{ + "id": mat["id"], + "playername": playername + } for mat in matchids] + await self._queue.request(jobtype="process", + payload=payloads, + priority=priority) except crawler.ApiError as error: raise joblib.worker.JobFailed(error.args[0]) async def startup(): - worker = Apigrabber( - apitoken=os.environ["VAINSOCIAL_APITOKEN"] - ) - await worker.connect( - host=os.environ["POSTGRESQL_HOST"], - port=os.environ["POSTGRESQL_PORT"], - user=os.environ["POSTGRESQL_USER"], - password=os.environ["POSTGRESQL_PASSWORD"], - database=os.environ["POSTGRESQL_DB"] - ) - await worker.setup() - await worker.start(2) + for _ in range(1): + worker = Apigrabber( + apitoken=os.environ["VAINSOCIAL_APITOKEN"] + ) + await worker.connect( + host=os.environ["POSTGRESQL_HOST"], + port=os.environ["POSTGRESQL_PORT"], + user=os.environ["POSTGRESQL_USER"], + password=os.environ["POSTGRESQL_PASSWORD"], + database=os.environ["POSTGRESQL_DB"] + ) + await worker.setup() + await worker.start() logging.basicConfig( @@ -48,6 +48,7 @@ class Crawler(object): aiohttp.errors.ClientResponseError, aiohttp.errors.ClientOSError): # API bug? + logging.warning("API error, retrying") pass await asyncio.sleep(10) diff --git a/joblib b/joblib -Subproject 8d58a4f5f754b6541af84478a2df3fba70db94b +Subproject 7799048a5927670b9492f80cdbbf2fd8d319c50 |
