zabawy z cache

This commit is contained in:
Hubert Dwornik 2024-06-14 18:12:53 +02:00
parent 52e509404e
commit f702d18251
5 changed files with 47 additions and 39 deletions

View File

@ -1,15 +1,26 @@
FROM node:latest # Use an official Python runtime as a parent image
FROM python:3.10-slim
# Create app directory # Set the working directory to /app
WORKDIR /usr/src/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 # Copy the Python script, requirements, and constants.ini file into the container at /app
RUN npm install -g http-server 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 # Modify requirements.txt to use psycopg2-binary
COPY . . RUN sed -i 's/psycopg2==2.9.9/psycopg2-binary==2.9.9/' requirements.txt
EXPOSE 8080 # Install any needed packages specified in requirements.txt
CMD ["http-server", "-p 8080"] RUN pip install --no-cache-dir -r requirements.txt
# Run frontend_AI_connector.py when the container launches
CMD ["python", "./frontend_AI_connector.py"]

View File

@ -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"]

15
Dockerfile_frontend Normal file
View File

@ -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"]

View File

@ -1,11 +1,14 @@
from flask import Flask, request, jsonify from flask import Flask, request, jsonify
from flask_caching import Cache
import psycopg2 import psycopg2
import pandas import pandas
import json import json
from configparser import ConfigParser from configparser import ConfigParser
from datetime import datetime
app = Flask(__name__) app = Flask(__name__)
cache = Cache(config={'CACHE_TYPE': 'SimpleCache'})
db_connector = None db_connector = None
conn = None conn = None
movie_list = None movie_list = None
@ -20,8 +23,9 @@ def error_decorator(fun):
return inner1 return inner1
@app.route("/", methods=["GET"]) @app.route("/", methods=["GET"])
@cache.cached(timeout=69)
def hello(): def hello():
return jsonify({"response": "Hello there"}), 200 return jsonify({"response": "Hello there", "time": datetime.now()}), 200
#endpoint do wyciągania danych o userze #endpoint do wyciągania danych o userze
@app.route("/api/v3/get/<string:username>", methods=["GET"]) @app.route("/api/v3/get/<string:username>", methods=["GET"])
@ -59,7 +63,6 @@ def get_recommendations(oauth_ID):
return jsonify({"movies": ["3", "Wiedźmin 3", "Najlepszy."]}), 200 return jsonify({"movies": ["3", "Wiedźmin 3", "Najlepszy."]}), 200
@app.route("/api/v3/get_movie/<int:movie_ID>", methods=["GET"]) @app.route("/api/v3/get_movie/<int:movie_ID>", methods=["GET"])
# @error_decorator
def get_movie(movie_ID): def get_movie(movie_ID):
movie_info = movie_list.loc[movie_list['movie_id'] == movie_ID] movie_info = movie_list.loc[movie_list['movie_id'] == movie_ID]
if movie_info.empty: if movie_info.empty:
@ -136,8 +139,11 @@ if __name__ == "__main__":
else: else:
break 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) app.run(host="0.0.0.0",port=8090, debug=True)
conn.close() conn.close()

View File

@ -1,3 +1,4 @@
flask==3.0.3 flask==3.0.3
psycopg2==2.9.9 psycopg2==2.9.9
pandas==2.2.2 pandas==2.2.2
Flask-Caching==2.3.0