Alias resource class to Model
This commit is contained in:
parent
5012c5a4d3
commit
c0a629ae9a
14
atst/jobs.py
14
atst/jobs.py
@ -51,24 +51,26 @@ class ClaimFailedException(Exception):
|
|||||||
|
|
||||||
@contextmanager
|
@contextmanager
|
||||||
def claim_for_update(resource):
|
def claim_for_update(resource):
|
||||||
|
Model = resource.__class__
|
||||||
|
|
||||||
rows_updated = (
|
rows_updated = (
|
||||||
db.session.query(resource.__class__)
|
db.session.query(Model)
|
||||||
.filter_by(id=resource.id, claimed_at=None)
|
.filter_by(id=resource.id, claimed_at=None)
|
||||||
.update({"claimed_at": func.now()}, synchronize_session=False)
|
.update({"claimed_at": func.now()}, synchronize_session=False)
|
||||||
)
|
)
|
||||||
if rows_updated < 1:
|
if rows_updated < 1:
|
||||||
raise ClaimFailedException(
|
raise ClaimFailedException(
|
||||||
f"Could not acquire claim for {resource.__class__.__name__} {resource.id}."
|
f"Could not acquire claim for {Model.__name__} {resource.id}."
|
||||||
)
|
)
|
||||||
|
|
||||||
claimed = db.session.query(resource.__class__).filter_by(id=resource.id).one()
|
claimed = db.session.query(Model).filter_by(id=resource.id).one()
|
||||||
|
|
||||||
try:
|
try:
|
||||||
yield claimed
|
yield claimed
|
||||||
finally:
|
finally:
|
||||||
db.session.query(resource.__class__).filter(
|
db.session.query(Model).filter(
|
||||||
resource.__class__.id == resource.id
|
Model.id == resource.id
|
||||||
).filter(resource.__class__.claimed_at != None).update(
|
).filter(Model.claimed_at != None).update(
|
||||||
{"claimed_at": sql.null()}, synchronize_session=False
|
{"claimed_at": sql.null()}, synchronize_session=False
|
||||||
)
|
)
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user