작성
·
824
0
안녕하세요~선생님,
마지막 수업 "3.텐서플로를 이용한 신경망 분석 - 스마트카 이상징후 판별 4" 에서 다음과 같은 크롬에서 API호출 에러가 발생합니다.
Anaconda prompt에는 정상적으로 실행이 되는데 API호출 변수에 이상이 있는 것 같습니다.
API호출 함수를 아래와 같이 두 가지로 해보았으나 같은 에러가 발생합니다.
(1)127.0.0.1:9001/smartcar/predict?wea=2&temp=0&hum=1&arrOthCar=2&time=0&acciArea=1&drvCond=1&innCond=2&carSpd=2&steeAng=0
(2)127.0.0.1:9001/smartcar/predict?wea=2&temp=0&hum=1&arrCar=2&timeSlot=0&acciArea=1&drvCond=1&innCond=2&carSpd=2&steeAng=0
감사합니다~
답변 8
0
0
선생님 말씀주신대로 print()추가하고, Chrom 브라우져에서 API를 호출하였습니다.
그런데 def predict()내에서는 print()문이 작동하지 않습니다,,
네~ 파이썬 버젼이 좀 높네요!
의심 되는건 26번째줄의 flask.request.args 로 보입니다.
우선 아래처럼 해보시고요..
관련방법이 여러가지라 테스트를 해봐야 할것같습니다. - 빅디 드림
request.get_json(force=True,silent=True)
0
네~ candyclara 님!
위 VSCode 환경에서 아래 내용으로 테스트좀 해봐 주세요!!!
VSCode에서 앞서 작업 했었던 print() 문을 추가해 주시고요,
Chrom 브라우져에서 API를 호출 하고요,
다시 VSCode로 와서 로그의 스크린샷 부탁 드립니다.
추가로 flask 실행환경에서 파이썬과 플라스크의 Version도 아래 명령으로 확인 부탁 드립니다~
$ python --version
$ flask --version
특별히 큰 문제로 보이지는 않습니다. 아마도 환경 문제인거 같은데요..
하나씩 문제의 원인을 좁혀 보시죠~ ^^
-빅디 드림
0
아~ 네 콘솔은 별게 아니고 로그가 찍히는곳을 말합니다.^^
Step 1~3 은 api 호출후 찍히는 로그라서, 브라우져에서 url입력후, 앞서 처럼 hello bigdata 가 찍힌 창의 스크린샷 부탁 드립니다~
-빅디 드림
0
아~ 네! candyclara님!
제가 요청 했던 사항이 좀 명확하지 않았네요...^^;;;;
저렇게 Bad Request가 난 상태에서 Flask 콘솔의 로그를 보기위한 스크린샷을 확인 부탁 드립니다.
확인하고 싶은 사항은 Flask or Rest API의 URI 문제인지, 파라미터 or Model의 문제인지를 확인해 보고 싶어서 입니다. 만약 파라미터 또는 DNN모델이 문제라면 ".........Step2"까지 로그가 찍히고 Error로그가 찍힐 겁니다.
확인 부탁드려요~ -빅디 드림
0
아래와 같이 print문을 5군데 삽입하여 실행했는데 처음과 마지막은 출력이 되는데 중간에 3군데는 출력되지 않습니다,,
실행결과는 아래와 같습니다
감사합니다~
0
안녕하세요! candyclara님!
점심 맛나게 하셨는지요~
로그출력이 안되는건 제가 가이드를 잘못드렸네요..죄송합니다. ^^;;;
먼저 sys 패키지를 import 해주시고요, print 명령 옵션을 아래처럼 추가해 주세요~
import sys
print("hello bigdata", file = sys.stdout)
-빅디 드림
0
안녕하세요! candyclara님!
드뎌 파일럿 프로젝트 막판까지 오셨군요!! ^^
끝까지 파이팅 입니다~
Bad Request가 왜 났는지 Flask의 smart_dnn_service.py에 로그를 찍어 봐야 할 것 같습니다.
간단하게 predict()함수 부분에서 아래처럼 print 명령으로 "step1,2,3"을 찍어서 재실행봐 주세요!!
-빅디 드림
@app.route('/smartcar/predict', methods=["GET","POST"])
def predict():
data = {"success": False}
params = flask.request.json
if (params == None):
params = flask.request.args
print("...........................................................Step-1")
print(params)
# if parameters are found, return a prediction
if (params != None):
x=pd.DataFrame.from_dict(params, orient='index').transpose()
print("...........................................................Step-2")
print(x)
with graph.as_default():
data["prediction"] = str(model.predict(x).argmax())
data["success"] = True
# return a response in json format
print("...........................................................Step-3")
print(data)
return flask.jsonify(data)
안녕하세요! 빅디 입니다.
이런 문제는 현장에서 매우 빈번하게 발생하곤 합니다.
필드에선 한 서버에 자바 or 파이썬 등의 환경을 공유 하는 여러 시스템들을 구성 하는 경우도 많은 데요.
이땐 누군가가 파이썬 버젼을 올려 버리면, 기존 버젼의 라이브러리에서 작동하던 다른 시스템들의 프로그램에 문제가 발생하는게 비일비재 일어납니다.
문제는 이 원인을 찾는게...간단히 해결되기도 하지만, Candyclara님처럼 돌아돌아 많은 시간을 소모 하는 경우가 많다는 것 입니다. ^^;;
그래서 파일럿 프로젝트에서 이런 경험을 직간접적으로 얻는 것이 아~주 중요 합니다.
-빅디 드림