From f702d182518fe036993a2705f57669e519226727 Mon Sep 17 00:00:00 2001 From: Hubert Dwornik Date: Fri, 14 Jun 2024 18:12:53 +0200 Subject: [PATCH] zabawy z cache --- Dockerfile | 31 +++++++++++++++------- Dockerfile_backend | 25 ----------------- Dockerfile_frontend | 15 +++++++++++ connector/Include/frontend_AI_connector.py | 12 ++++++--- connector/Include/requirements.txt | 3 ++- 5 files changed, 47 insertions(+), 39 deletions(-) delete mode 100644 Dockerfile_backend create mode 100644 Dockerfile_frontend diff --git a/Dockerfile b/Dockerfile index 3cb976fb..667dfc68 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,15 +1,26 @@ -FROM node:latest +# Use an official Python runtime as a parent image +FROM python:3.10-slim -# Create app directory -WORKDIR /usr/src/app +# Set the working directory to /app +WORKDIR /app -# Install app dependencies +# Install necessary OS packages +RUN apt-get update && apt-get install -y --no-install-recommends \ + build-essential \ + libpq-dev \ + && rm -rf /var/lib/apt/lists/* -# If you also need http-server globally -RUN npm install -g http-server +# Copy the Python script, requirements, and constants.ini file into the container at /app +COPY connector/Include/frontend_AI_connector.py /app/ +COPY connector/Include/requirements.txt /app/ +COPY connector/Include/init_scripts/constants.ini /app/init_scripts/ +COPY connector/Include/init_scripts/movies.csv /app/init_scripts/ -# Bundle app source -COPY . . +# Modify requirements.txt to use psycopg2-binary +RUN sed -i 's/psycopg2==2.9.9/psycopg2-binary==2.9.9/' requirements.txt -EXPOSE 8080 -CMD ["http-server", "-p 8080"] +# Install any needed packages specified in requirements.txt +RUN pip install --no-cache-dir -r requirements.txt + +# Run frontend_AI_connector.py when the container launches +CMD ["python", "./frontend_AI_connector.py"] \ No newline at end of file diff --git a/Dockerfile_backend b/Dockerfile_backend deleted file mode 100644 index 68423981..00000000 --- a/Dockerfile_backend +++ /dev/null @@ -1,25 +0,0 @@ -# Use an official Python runtime as a parent image -FROM python:3.10-slim - -# Set the working directory to /app -WORKDIR /app - -# Install necessary OS packages -RUN apt-get update && apt-get install -y --no-install-recommends \ - build-essential \ - libpq-dev \ - && rm -rf /var/lib/apt/lists/* - -# Copy the Python script, requirements, and constants.ini file into the container at /app -COPY connector/Include/frontend_AI_connector.py /app/ -COPY connector/Include/requirements.txt /app/ -COPY connector/Include/init_scripts/constants.ini /app/init_scripts/ - -# Modify requirements.txt to use psycopg2-binary -RUN sed -i 's/psycopg2==2.9.9/psycopg2-binary==2.9.9/' requirements.txt - -# Install any needed packages specified in requirements.txt -RUN pip install --no-cache-dir -r requirements.txt - -# Run frontend_AI_connector.py when the container launches -CMD ["python", "./frontend_AI_connector.py"] \ No newline at end of file diff --git a/Dockerfile_frontend b/Dockerfile_frontend new file mode 100644 index 00000000..3cb976fb --- /dev/null +++ b/Dockerfile_frontend @@ -0,0 +1,15 @@ +FROM node:latest + +# Create app directory +WORKDIR /usr/src/app + +# Install app dependencies + +# If you also need http-server globally +RUN npm install -g http-server + +# Bundle app source +COPY . . + +EXPOSE 8080 +CMD ["http-server", "-p 8080"] diff --git a/connector/Include/frontend_AI_connector.py b/connector/Include/frontend_AI_connector.py index f489ca29..03209c79 100644 --- a/connector/Include/frontend_AI_connector.py +++ b/connector/Include/frontend_AI_connector.py @@ -1,11 +1,14 @@ from flask import Flask, request, jsonify +from flask_caching import Cache import psycopg2 import pandas import json from configparser import ConfigParser +from datetime import datetime app = Flask(__name__) +cache = Cache(config={'CACHE_TYPE': 'SimpleCache'}) db_connector = None conn = None movie_list = None @@ -20,8 +23,9 @@ def error_decorator(fun): return inner1 @app.route("/", methods=["GET"]) +@cache.cached(timeout=69) def hello(): - return jsonify({"response": "Hello there"}), 200 + return jsonify({"response": "Hello there", "time": datetime.now()}), 200 #endpoint do wyciągania danych o userze @app.route("/api/v3/get/", methods=["GET"]) @@ -59,7 +63,6 @@ def get_recommendations(oauth_ID): return jsonify({"movies": ["3", "Wiedźmin 3", "Najlepszy."]}), 200 @app.route("/api/v3/get_movie/", methods=["GET"]) -# @error_decorator def get_movie(movie_ID): movie_info = movie_list.loc[movie_list['movie_id'] == movie_ID] if movie_info.empty: @@ -136,8 +139,11 @@ if __name__ == "__main__": else: break - movie_list = pandas.read_csv(config["movie"]["csv_path"]) + movie_list = pandas.read_csv(config["movie"]["csv_path"]) + cache.init_app(app) app.run(host="0.0.0.0",port=8090, debug=True) + + conn.close() diff --git a/connector/Include/requirements.txt b/connector/Include/requirements.txt index 36c93d23..ef7d9122 100644 --- a/connector/Include/requirements.txt +++ b/connector/Include/requirements.txt @@ -1,3 +1,4 @@ flask==3.0.3 psycopg2==2.9.9 -pandas==2.2.2 \ No newline at end of file +pandas==2.2.2 +Flask-Caching==2.3.0 \ No newline at end of file