def clean_queue(msg: str) -> str: db = SessionLocal() print("In clear_queue()") counter = 0 timeout = datetime.datetime.utcnow() - datetime.timedelta(minutes=15) old_queue = db.query(Queue).filter(Queue.pending == True).\ filter(Queue.arrival_time <= timeout).filter(Queue.in_progress == False) for row in old_queue: print(f"Timing out queue entry {row.uuid}") stat_queue = Statistics(uuid=row.uuid, arrival_time=row.arrival_time, dequeued_at=row.dequeued_at, deleted_at=datetime.datetime.utcnow(), purged=True) db.add(stat_queue) counter += 1 db.delete(row) timeout = datetime.datetime.utcnow() - datetime.timedelta(minutes=60 * 24) very_old_queue = db.query(Queue).filter(Queue.arrival_time <= timeout) for row in very_old_queue: print(f"Timing out queue entry {row.uuid}") stat_queue = Statistics(uuid=row.uuid, arrival_time=row.arrival_time, dequeued_at=row.dequeued_at, deleted_at=datetime.datetime.utcnow(), purged=True) db.add(stat_queue) counter += 1 db.delete(row) db.commit() return f"Queue cleaned, {counter} entries removed."
def forward_rule_status_handler(port_id: int, status_data: dict, update_status: bool): if not update_status: return status_data db = SessionLocal() rule = (db.query(PortForwardRule).filter( PortForwardRule.port_id == port_id).first()) if rule: if (status_data.get("status", None) == "starting" and rule.status == "running"): return status_data rule.status = status_data.get("status", None) db.add(rule) db.commit() return status_data