코딩은 실력보다 시력이지

빅데이터교육과정/Python

최종프로젝트 - AWS

Listeria 2021. 7. 1. 05:51

우리가 만든 데이트 코스 검색 프로그램이 항시 작동하도록 하기 위해서 아마존 웹서버를 이용하기로 하였다. 웹페이지를 활용하기 위해서 플라스크를 활용하였다.

import os
import WordsSimilariryAlgorithm.Search as s
import WordsSimilariryAlgorithm.DataFilter as df
import WordsSimilariryAlgorithm.Tokenizers as t
import WordsSimilariryAlgorithm.BlogTraking as bt
import WordsSimilariryAlgorithm.GensimActive as ga
import WordsSimilariryAlgorithm.TransWeb as tw
import FaceFind.transferLoadMk02 as tl
from werkzeug.utils import secure_filename

from flask import Flask, request, render_template, redirect # 파이썬 서버(flask)와 서버 내의 여러 도움을 주는 패키지(requset) 임포트



app = Flask(__name__) # 서버 생성자
app.config['JSON_AS_ASCII'] = False # response 시 ACSII 코드로 변환하는 것 방지
fileStore = 'fileStore'
app.config['fileStore'] = fileStore

@app.route('/')
def input_page():
    return render_template('IAsk2U.html')

@app.route('/wordSimAl') # 컨트롤러
def word_similarity_algorithm(): # 구성품
    input1 = request.args.get('region', "신림")  # 지역 input
    input2 = request.args.get('theme', "카페")  # 테마 input
    input3 = request.args.get('keyword', "분위기")  # 키워드 input
    input4 = request.args.get('cnt',"0")

    themeList = s.searchCategory(input1, input2)
    if str(themeList) == '[]' :
        return render_template('SearchFindNull.html', cnt=input4)
    blogContentList = s.searchBlog(themeList, input1)
    df_blog = df.pandasing(blogContentList)
    tokenized_data, temp_Y = t.token(df_blog, input3)
    yousaList = ga.keyedVector(temp_Y)
    outputJson, outputJsonForWeb = bt.blogJsing(yousaList, tokenized_data, blogContentList, themeList)
    result = tw.JsonToStr(outputJson)

    if type == "android" : return result
    else : return render_template('UAnswer2Me.html', storeData=outputJsonForWeb, cnt=input4)

@app.route('/roadFind')
def road_find():
    r1 = request.args.get('r', "신림")  # 지역 input
    t1 = request.args.get('t', "카페")  # 테마 input
    k1 = request.args.get('k', "분위기")  # 키워드 input
    r2 = request.args.get('r2', "신림")  # 지역 input
    t2 = request.args.get('t2', "카페")  # 테마 input
    k2 = request.args.get('k2', "분위기")  # 키워드 input
    r3 = request.args.get('r3', "신림")  # 지역 input
    t3 = request.args.get('t3', "카페")  # 테마 input
    k3 = request.args.get('k3', "분위기")  # 키워드 input

    reUrl = s.transferAxis(r1,t1,k1,r2,t2,k2,r3,t3,k3)

    print(reUrl)

    return redirect(reUrl)

@app.route('/upload')
def uploadRender():
    return render_template('ImageIO.html')

@app.route('/fileUpload', methods=['GET','POST'])
def uplaod_file():

    if request.method == 'POST':
        f = request.files['file']
        filename = secure_filename(f.filename)
        f.save(os.path.join(app.config['fileStore'], filename))
        path = filename
        sName, per = tl.detectImg(path)

        if int(per[:-1]) < 60 :
            sName = ""
            per = "개중에 하나도 닮은 사람이 없습니다."
        else : per = per + "의 확률로 닮았습니다."

        return render_template('UploadResult.html', face=sName,per=per)

if __name__ == "__main__":
    app.run(host='0.0.0.0')

플라스크의 메인코드

이런식으로 파일을 정리하여 아마존 서버에 올린뒤 간단하게

경로만 맞춰준 뒤, python3 Main.py를 실행하면 된다.

AWS 상에서 보다 작업을 편하게 하기 위해서 TigerVNC를 사용해서 GUI 환경을 구축하였다. 다만 이미지 처리부분은 AWS에 그래픽카드를 대여하지 않았기 때문에 처리하는데 한계가 있다고 판단하여 현재로서는 노트북을 통해서 별도로 처리를 해야한다.

위와 같이 반응형 웹을 이용해서 활용할 수 있게 만들어 두었으며 www.datecourse.kro.kr  을 통해 확인할 수 있다.

다만... AWS에 구축해둔 컴퓨터가 무료모델(기본형) 이기 때문에 속도가 아쉽다는 단점이 있다... 기다림의 미학...필수...

'빅데이터교육과정 > Python' 카테고리의 다른 글

최종 프로젝트 - 이미지 학습(1)  (0) 2021.07.01
최종 프로젝트 - 자연어 처리  (0) 2021.07.01
DATA 긁어오기  (0) 2021.05.25
파이썬 - 성적처리  (0) 2021.04.24