1) url parsing 이용 추천 함수 구분
def handle_http(self, status_code, path):
self.send_response(status_code)
self.send_header('Content-type', 'application/json')
self.end_headers()
global Func
global user_id
if path != '/favicon.ico':
Func = path[1:10]
user_id = path[11:].encode('UTF-8')
user_id = int(user_id)
else:
pass
if Func == 'Pic_Recom':
already_rated, predictions = self.Pic_Recom(user_id, 10)
predictions = predictions.set_index('Cloth_ID')
# predictions = predictions.set_index('Cloth_ID')
content = predictions.to_json(orient = 'records')
else:
pass
return bytes(content, 'UTF-8')
# return content
def respond(self, opts):
response = self.handle_http(opts['status'], self.path)
self.wfile.write(response)
위 path 값이 url parsing 값이 입력되고 곧 바로 favicon.ico가 parsing 되어 path에 저장되었다. 웹상에 보여줄 때는 favicon.ico라는 path는 걸러서 보여주는 것 같다. (또는 맨 처음 parsing된 path값을 보여줄 수 도 있다.) 조건문을 통해 favicon.ico가 path에 저장되어도 함수와 user_ID를 구분하는 데에는 저장하지 않았다.
2) usrID 입력반영
위 코드에서 처럼 path를 ‘/’ 를 구분자로 함수와 user_ID를 입력받아 사진추천 함수를 실행하였다.
3) rds 연결 내용 클래스 분리
rds와 연결되는 Id/Pw는 클래스 파일로 분리하여 로컬에 저장하였다.
4) ec2 파일 저장 반영
today = pd.Timestamp('today')
preds_df.to_csv('../Data/preds_df_{:%Y%m%d%H%M}.csv'.format(today) ,index=False)
if __name__ == "__main__":
pred_batch()
sys.exit(1)
배치 파일 내에서 백업 파일 저장은 다음과 같은 코드를 통해 날짜와 시간이 찍힌 파일로 저장하였다.
files = [f for f in listdir('../Data/') if isfile(join('../Data/', f))]
predictions_df = pd.read_csv('../Data/{}'.format(files[-1]))
가장 최신 파일을 불러 올 때는 위와 같은 코드를 이용하였다.