인프런 커뮤니티 질문&답변

도나스님의 프로필 이미지
도나스

작성한 질문수

[2024 신규] 어서와, Fast API는 처음이지?

개발의 시작은 뭐다? 환경 설정(VS Code, Python, PostgreSQL 설치 등등)

실행을 했음에도 연결이 안되는 경우는 어떻게 해야할까요

해결된 질문

작성

·

344

·

수정됨

1

(base) PS C:\Users\JaeJun> curl http://127.0.0.1:8000

StatusCode        : 200
StatusDescription : OK
Content           : {"Hello":"World"}
RawContent        : HTTP/1.1 200 OK
                    Content-Length: 17
                    Content-Type: application/json
                    Date: Sun, 28 Apr 2024 07:59:31 GMT
                    Server: uvicorn
                    {"Hello":"World"}
Forms             : {}
Headers           : {[Content-Length, 17], [Content-Type, application/json], [Date, Sun, 28 Apr 2024 07:59:31 GMT], [Server, uvicorn]}
Images            : {}
InputFields       : {}
Links             : {}
ParsedHtml        : mshtml.HTMLDocumentClass
RawContentLength  : 17

powershell을 통해 호출할 경우 위와 같이 GET이 정상적으로 되지만
웹브라우저를 통해서 접근할 경우에는
Chrome이나 Edge 모두 연결할 수 없다고 합니다..
인바운드,아웃바운드 모두 8000을 혹시 몰라 열어둔 상태이며,
8000이 아닌 8000-8010까지 포트를 변경해봤는데 안되고 있습니다. 어떻게 해야할까요

답변 4

1

RAZOR님의 프로필 이미지
RAZOR
지식공유자

윈도우+R 누르시고 "C:\Windows\System32\drivers\etc" 입력하시면 hosts 파일이 보이는데요.. 여기에 127.0.0.1을 localhost로 매핑이 안되어있는 것 같긴 합니다..! 흠.......... 아래 포스팅 내용 참고하셔서 매핑(127.0.0.1 localhost) 한번 진행해보시겠어요? 그래도 안된다면 다시 알아보겠습니다!!

https://chashtag.tistory.com/entry/Windows-hosts-%ED%8C%8C%EC%9D%BC-%EC%9C%84%EC%B9%98-%EC%88%98%EC%A0%95-%EB%B0%A9%EB%B2%95

1

RAZOR님의 프로필 이미지
RAZOR
지식공유자

안녕하세요, 도나스님!

5월 4일에 멘토링 지원해주신 분이시요!

이게 Uvicorn Running까지 됐는데.. 웹페이지에서 띄우면 안된다는거죠..?

INFO:     Started server process [25576]
INFO:     Waiting for application startup.
INFO:     Application startup complete.
INFO:     Uvicorn running on http://127.0.0.1:8000 (Press CTRL+C to quit)
INFO:     127.0.0.1:2183 - "GET / HTTP/1.1" 200 OK

일단 포스트그리랑은 관련 없습니다!

 

먼저..다른 쪽에서 8000번 쓰고있는지 확인해봐야겠네요.. (다른 포트 번호로도 안됐다니 이 문제는 아닌 것 같은데..) 일단, 아래와 같이 Check List 전달 드립니다.

1) Localhost에서 포트 번호를 이미 사용 중인지 확인(아래는 127.0.0.1 쓰고 있는거 다 보여주는 명령어)

  • netstat -ano | findstr "127.0.0.1"

2) 있다면 PID 확인한 다음에 아래 명령어로 강제 Kill 이후에 재시도

4) 방화벽.. 설정은 해주신 것 같으니까 제외할께요

5) Log 확인

  • 127.0.0.1:8000 가셔서 F12 누르시고 Console이랑 Network에 특이한 로그 남는지 확인해주세요

image

image

image

1

도나스님의 프로필 이미지
도나스
질문자

몇번 시도하다가 방법을 찾았는데 이유를 몰라 댓글을 추가적으로 남깁니다..

127.0.0.1로 해서 안되기에 혹시 몰라 localhost로 지칭을 바꿔 진행을 해보니 연결이 되었습니다;;

if __name__ == "__main__":
    uvicorn.run(app, host="localhost",port=8000)

제가 알기론 'localhost'와 '127.0.0.1' 2개의 차이점이 그냥 표현의 차이로 아는데 왜 이렇게 되는지 이유를 모르겠네요;;

RAZOR님의 프로필 이미지
RAZOR
지식공유자

헐.......................................................................... 차이점은 제가 알아보겠습니다.. 뭐죠???

윈도우+R 누르시고 "C:\Windows\System32\drivers\etc" 입력하시면 hosts 파일이 보이는데요.. 여기에 127.0.0.1을 localhost로 매핑이 안되어있는 것 같긴 합니다..! 흠.......... 아래 포스팅 내용 참고하셔서 매핑(127.0.0.1 localhost) 한번 진행해보시겠어요? 그래도 안된다면 다시 알아보겠습니다!!

https://chashtag.tistory.com/entry/Windows-hosts-%ED%8C%8C%EC%9D%BC-%EC%9C%84%EC%B9%98-%EC%88%98%EC%A0%95-%EB%B0%A9%EB%B2%95

도나스님의 프로필 이미지
도나스
질문자

확인을 해보니

127.0.0.1 localhost라는 매핑이 존재하지 않아 이부분이 문제라고 저도 생각하고 수정했는데

여전히 127.0.0.1에서 안되고 localhost로만 진행이 되고 있습니다..ㅠ

도나스님의 프로필 이미지
도나스
질문자

죄송합니다 원인을 찾았네요

제가 지금 해외출장을 온 상황이라 VPN을 키고 있었는데 이게 막고 있었어요

VPN을 키면 127.0.0.1이 안되네요.. 내부에서 도는거라 관계가 없을거라 생각했는데;;

 

결론적으로는 host파일에 매핑이 안되서 안된 것도 있지만,

VPN이 막고 있어서 안되고 있던 것 같아요ㅠㅠ

RAZOR님의 프로필 이미지
RAZOR
지식공유자

헛 그랬었군요..!! 저도 하나 배웠네요ㅠ 그래도 다행입니다! 출장 중에도 수강하시다니 열정이 대단하십니다..! 수강 중에 질문 있으면 언제든 말씀주세요! 감사합니다 :)

1

도나스님의 프로필 이미지
도나스
질문자

import uvicorn
from typing import Union

from fastapi import FastAPI

app = FastAPI()


@app.get("/")
def read_root():
    return {"Hello": "World"}


@app.get("/items/{item_id}")
def read_item(item_id: int, q: Union[str, None] = None):
    return {"item_id": item_id, "q": q}

if __name__ == "__main__":
    uvicorn.run(app, host="127.0.0.1",port=8000)

코드도 강의와 동일합니다.
Python 3.12.2로 버전도 동일하지만

굳이 차이를 찾자면 PostgreSQL버전이 다르다는 점..?

방법을 찾아보는데 잘 안풀려 글 남깁니다.

도나스님의 프로필 이미지
도나스

작성한 질문수

질문하기