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