본문 바로가기
App Programming/AWS

[AWS] Flask에 PostgreSQL 적용

by goatlab 2024. 5. 31.
728x90
반응형
SMALL

pyenv

 

pyenv로 파이썬 3.11.9 버전을 활성화시킨다.

 

pyenv activate py3_11_9

 

초기 디렉토리에서 flaskapp 디렉토리를 생성한다.

 

mkdir flaskapp

 

 

flask

 

vim 에디터로 main 파이썬 파일을 생성한다.

 

 vim main.py
import numpy as np
from sklearn.linear_model import LinearRegression
import psycopg2
from flask import Flask, request, jsonify

app = Flask(__name__)
np.random.seed(0)
X = np.random.rand(10, 1)
y = 2 * X + 1 + 0.1 * np.random.randn(10, 1)
model = LinearRegression()
model.fit(X, y)

@app.route('/')
def welcome():
    return 'HELLO, ML API SERVER'
    
@app.route('/predict', methods=['POST'])
def predict():
    data = request.json
    new_X = data['input']
    new_X_val = float(new_X[0])
    input_X = np.array(new_X_val).reshape(1, -1)
    y_pred = model.predict(input_X)
    y_pred_list = y_pred.tolist()
    y_pred_val = round(y_pred_list[0][0], 5)
    conn = psycopg2.connect(dbname='ml', user='postgres', password='postgres', host='127.0.0.1', port=5432)
    cur = conn.cursor()
    query = "INSERT INTO pred_result (input, output) VALUES (%s, %s)"
    values = (new_X_val, y_pred_val)
    cur.execute(query, values)
    conn.commit()
    cur.close()
    conn.close()
    res = jsonify({'input': new_X_val, 'predicted_output': y_pred_val})
    
    return res
    
if __name__ == '__main__':
    app.run(host='0.0.0.0', port=5000)

 

포트 설정

 

flask 서버를 위해 5000번 포트를 열어준다.

 

 python main.py

 

predict 수행

 

curl -d "{""input"":[""0.8""]}" -H "Content-Type: application/json" -X POST http://{퍼블릭 IPv4 주소}:5000/predict

728x90
반응형
LIST

'App Programming > AWS' 카테고리의 다른 글

[AWS] 도커 컨테이너 nginx 배포  (0) 2024.06.11
[AWS] 도커 컨테이너 배포  (0) 2024.06.11
[AWS] PostgreSQL 설치  (0) 2024.05.31
[AWS] 도커 설치  (0) 2024.05.30
[AWS] EC2 Jupyter 서버  (0) 2024.05.21