Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- @transaction.commit_manually
- def worker():
- while True:
- logger.info("Loop repeats itself.")
- for item in queue:
- savept = transaction.savepoint()
- try:
- if item.success():
- logger.info("Win")
- transaction.savepoint_commit(savept)
- else:
- transaction.savepoint_rollback(savept)
- item.error = True
- item.save()
- logger.error("Fail")
- transaction.savepoint_commit(savept)
- except:
- transaction.savepoint_rollback(savept)
- logger.exception("Stopped prematurely, for attached reason.")
- transaction.savepoint_commit(savept)
- sys.exit()
- finally:
- transaction.commit() # commit to DB after every item so that queries always return up-to-date info
- # (workaround for the way the Django ORM works)
- # sleep for a while
- logger.info("Queue finished.")
- transaction.commit()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement