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

도나스님의 프로필 이미지

작성한 질문수

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

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

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

해결된 질문

24.04.28 17:05 작성

·

314

·

수정됨

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
지식공유자

2024. 04. 28. 19:01

윈도우+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
지식공유자

2024. 04. 28. 18:52

안녕하세요, 도나스님!

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

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

2024. 04. 28. 18:20

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

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

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

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

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

2024. 04. 28. 18:54

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

윈도우+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

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

2024. 04. 28. 21:54

확인을 해보니

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

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

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

2024. 04. 28. 22:01

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

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

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

 

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

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

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

2024. 04. 28. 22:49

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

1

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

2024. 04. 28. 17:08

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버전이 다르다는 점..?

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