summaryrefslogtreecommitdiff
path: root/joblib.py
diff options
context:
space:
mode:
authorschneefux <schneefux+commit@schneefux.xyz>2017-02-26 18:31:14 +0100
committerschneefux <schneefux+commit@schneefux.xyz>2017-02-26 18:31:14 +0100
commit119362ab2b0c3f00bb80b927641f478a847ac1d9 (patch)
tree679d9408dafff2152b43dbc6b4c908bbcfd56052 /joblib.py
parentf7b858a53e0b3233e04186d18d309f8403ea99d1 (diff)
downloadjoblib-119362ab2b0c3f00bb80b927641f478a847ac1d9.tar.gz
joblib-119362ab2b0c3f00bb80b927641f478a847ac1d9.zip
add job fails
Diffstat (limited to 'joblib.py')
-rw-r--r--joblib.py15
1 files changed, 15 insertions, 0 deletions
diff --git a/joblib.py b/joblib.py
index a0ce985..48666a6 100644
--- a/joblib.py
+++ b/joblib.py
@@ -78,6 +78,21 @@ class JobQueue(object):
except asyncpg.exceptions.SerializationError:
pass
+ async def fail(self, jobid, reason):
+ """Mark a job as failed."""
+ async with self._pool.acquire() as con:
+ while True:
+ try:
+ async with con.transaction(isolation="serializable"):
+ await con.execute("""
+ UPDATE jobs
+ SET status='failed', payload=payload||$2::jsonb
+ WHERE id=$1
+ """, jobid, json.dumps({"error": reason}))
+ return
+ except asyncpg.exceptions.SerializationError:
+ pass
+
async def cleanup(self):
"""Reopen all unfinished jobs."""
async with self._pool.acquire() as con: