def main(): #setup session = SessionFactory.get() stmt = update(Request).values(activated=False) session.execute(stmt) session.commit() session.close() while True: session = SessionFactory.get() #Get unactivated request pending_request = session.query(Request).filter_by(blocked=False, activated=False) #Insert pending request to running queue and set activated flag to True for req in pending_request: threading.Timer(req.interval_between_checks, handle_request, (req,)).start() session.close() time.sleep(3)
def handle_request(request): #create seperate session session = SessionFactory.get() #Validate that still unblocked req = session.query(Request).filter_by(request_id=request.request_id).first() if not req.blocked: if not req.activated: #if not active yet, set to activated. req.activated = True #create result req.AddResult(session) #print("Req id: {2}, Res id:{0}, activated:{1}\n".format(res.id,req.activated, req.request_id)) threading.Timer(request.interval_between_checks*5, handle_request, (request,)).start() session.close()
def unblockRequest(request_id): session = SessionFactory.get() req = session.query(Request).filter_by(request_id=request_id).first() req.block() session.commit()