From f8d91d3d7ef68c8107402e0e72624da4c86e4bd6 Mon Sep 17 00:00:00 2001 From: gilyeon00 <12venus08@naver.com> Date: Sat, 24 Sep 2022 02:18:22 +0900 Subject: [PATCH] Feat : #6 Create AI service file (ai_conifg.py) --- {module => config}/__init__.py | 0 config/ai_config.py | 8 ++++++ entity/database.py | 5 ++++ requirements.txt | 9 ++++-- service/image_service.py | 50 ++++++++++++++++++++++++++++++++++ 5 files changed, 70 insertions(+), 2 deletions(-) rename {module => config}/__init__.py (100%) create mode 100644 config/ai_config.py create mode 100644 service/image_service.py diff --git a/module/__init__.py b/config/__init__.py similarity index 100% rename from module/__init__.py rename to config/__init__.py diff --git a/config/ai_config.py b/config/ai_config.py new file mode 100644 index 0000000..197c35e --- /dev/null +++ b/config/ai_config.py @@ -0,0 +1,8 @@ +import os + +# RABBITMQ_HOST=os.environ.get('RABBITMQ_HOST') +# RABBITMQ_PORT=os.environ.get('RABBITMQ_PORT') +# RABBITMQ_USER=os.environ.get('RABBITMQ_USER') +# RABBITMQ_PASSWORD=os.environ.get('RABBITMQ_PASSWORD') + +RBMQ_CONNECTION_URI=f'amqp://darling:0829@rabbitmq:5672//' \ No newline at end of file diff --git a/entity/database.py b/entity/database.py index 60f8565..9a5ded3 100644 --- a/entity/database.py +++ b/entity/database.py @@ -19,5 +19,10 @@ def edit_instance(model, user_id, **kwargs): setattr(instance, attr, new_value) commit_changes() + +def session_execute(): + db.session.execute() + + def commit_changes(): db.session.commit() \ No newline at end of file diff --git a/requirements.txt b/requirements.txt index 6c0ce2b..baf6a12 100644 --- a/requirements.txt +++ b/requirements.txt @@ -10,7 +10,12 @@ gunicorn sqlalchemy_utils urllib3 pandas -werkzeug +werkzeug==2.1.2 +boto3 Flask-Mail celery -amqp \ No newline at end of file +amqp +flask_jwt_extended +flask_bcrypt +flask_restx +redis \ No newline at end of file diff --git a/service/image_service.py b/service/image_service.py new file mode 100644 index 0000000..66d8200 --- /dev/null +++ b/service/image_service.py @@ -0,0 +1,50 @@ +from celery import Celery +from flask import jsonify + +from s3bucket import s3_connect +from api import s3_api +from entity.model import Image +from entity import database + +from datetime import datetime as dt +from s3bucket.s3_connect import s3 +from s3bucket.s3_upload import s3_put_result_image, s3_put_origin_image +from config.ai_config import RBMQ_CONNECTION_URI + + +app = Celery('tasks', + broker=RBMQ_CONNECTION_URI) + + +# 사진 받아오는 함수 +def saveOriginImage(file, email) : + + # 이메일 받아오면 user_id 찾기 + sql = f"SELECT user_id \ + FROM user \ + WHERE email='{email}'" + cursor = database.session_execute(sql) + user_id = cursor.fetchall()[0][0] + + # 파일 이름 지정 + filename = file.filename.split('.')[0] + image_type = file.filename.split('.')[-1] + image_created = dt.now().strftime('%Y-%m-%d-%H-%M-%S') + image_name = f"{image_created}--{filename}.{image_type}" + + # s3버킷에 업로드 + s3_put_result_image(s3, 'ladder-s3-bucket', file, image_name) + + # postgres image table에 origin_url 업로드 + origin_url = "https://ladder-s3-bucket.s3.ap-northeast-2.amazonaws.com/origin/"+image_name + origin_url = origin_url.replace(" ","/") + database.add_instance(Image, user_id = user_id, origin_url = origin_url, is_deleted = False) + + print("성공적으로 사진이 S3에 저장되었습니다.") + + + # celery가 처리할 거 + # api요청 (ai 서버) + + + # upload s3 .. (이건 만들어진 api로 보내도 됨 아니면 그냥 여기에 함수 쓰기) \ No newline at end of file