| from collections import OrderedDict |
| from threading import Thread |
|
|
| from flask import Flask |
|
|
| flask_app = Flask(__name__) |
|
|
|
|
| @flask_app.route("/", methods=["GET"]) |
| def home() -> str: |
| """ |
| Keepalive endpoint for hosting services. |
| """ |
| return "I'm alive" |
|
|
|
|
| def keepalive_run() -> None: |
| """ |
| Run keepalive Flask app in a daemon thread. |
| """ |
| def flask_run(): |
| flask_app.run(host="0.0.0.0", port="7860") |
| flask_thread = Thread(target=flask_run, daemon=True) |
| flask_thread.start() |
|
|
|
|
| class LRUCache: |
| """Least Recently Used (LRU) cache prototype implementation""" |
| def __init__(self, max_size): |
| self.max_size = max_size |
| self.cache = OrderedDict() |
|
|
| def __getitem__(self, key): |
| try: |
| val = self.cache[key] |
| self.cache.move_to_end(key) |
| return val |
| except KeyError: |
| return None |
|
|
| def __setitem__(self, key, value): |
| self.cache[key] = value |
| self.cache.move_to_end(key) |
| if len(self.cache) > self.max_size: |
| self.cache.popitem(last=False) |