summaryrefslogtreecommitdiff
path: root/api.py
diff options
context:
space:
mode:
authorschneefux <schneefux+github@schneefux.xyz>2017-03-05 10:36:38 +0100
committerGitHub <noreply@github.com>2017-03-05 10:36:38 +0100
commitb57c9a6f4e4572027aa2862bb684d6a0891ef801 (patch)
treecd2ddb9fc25af6e1c1152308dba6f960fe934986 /api.py
parentb8ea5a875043fa3ab13c81187404c6a389213184 (diff)
downloadapigrabber-b57c9a6f4e4572027aa2862bb684d6a0891ef801.tar.gz
apigrabber-b57c9a6f4e4572027aa2862bb684d6a0891ef801.zip
run jobs in batches (#57)
Diffstat (limited to 'api.py')
-rw-r--r--api.py47
1 files changed, 25 insertions, 22 deletions
diff --git a/api.py b/api.py
index f66b880..2e1c3de 100644
--- a/api.py
+++ b/api.py
@@ -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(