본문 바로가기

개발하자

Windows 서비스로서의 Fast API

반응형

Windows 서비스로서의 Fast API

나는 윈도우 서비스로 FastAPI를 실행하려고 한다.Windows 서비스로 Uvicorn을 실행할 문서나 문서를 찾을 수 없습니다. 나도 NSSM을 사용하려고 했지만 윈도우 서비스가 중지된다.




나는 NSSM을 사용하여 윈도우 서비스로 uvicorn으로 FastAPI를 실행할 수 있었다.

나는 기본적으로 파이썬 스크립트에서 직접 uvicorn을 실행한 다음 NSSM으로 사용자 지정 서비스를 만들고 설치해야 했다.

다음은 Fast를 기반으로 한 작은 예입니다API는 명령행에서 API를 실행하는 대신 사용자 자신의 구성으로 추가합니다.

from fastapi import FastAPI
import uvicorn

app = FastAPI()


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

if __name__ == "__main__":
    uvicorn.run("main:app", host="127.0.0.1", port=5000, log_level="info")

그런 다음 표준을 사용하여 NSSM과 함께 설치할 수 있습니다

nssm.exe install "FastAPIWindowsService" "C:\Scripts\FastAPIWindowsService\venv\Scripts\python.exe" "C:\Scripts\FastAPIWindowsService\src\main.py"

서비스 이름, python.exe의 경로 및 스크립트의 경로를 적절히 변경합니다. 설치하면 서비스가 윈도우즈 서비스 관리자에 표시됩니다.

이것이 당신에게 도움이 되고 효과가 있기를 바랍니다!




다른 답변을 조금 더 확장하면, 윈도우 서비스로 패스트 API를 실행하는 몇 가지 다른 방법이 있다(이는 윈도우 서비스로 파이썬 앱을 실행할 수 있는 것으로 일반화된다). 내가 찾은 가장 일반적인 방법은 다음과 같다:

  1. 사용하다
  2. 공식 문서화된 기법 중 하나를 사용합니다.

그 중 몇 가지를 시험해 본 결과, 나는 NSSM이 가장 쉽고 효과적인 방법이라는 것을 알았다. 아래의 기본 단계:

  1. Windows 서비스에서 호출할 FastAPI 앱에 진입점을 추가합니다. 에는 다양한 매개 변수에 대한 유용한 정보가 있습니다. 예상 부하를 기준으로 "작업자" 변수를 조정할 수 있습니다. 예(기본 FastAPI 파일의 이름을 가정):
if __name__ == "__main__":
    uvicorn.run("main:app", host="127.0.0.1", port=8000, workers=4)
  1. Windows 시스템에 Python이 없는 경우 설치합니다. 또한 nssm을 다운로드합니다.exe

  2. 를 실행하여 Windows 상자에서 앱을 테스트합니다. 시작하여 실행되는 경우 윈도우즈 서비스로 배포하는 것이 좋습니다.

  3. nssm을 사용하여 서비스를 생성합니다:

nssm install <windows service name> <python.exe path> main.py  
nssm set <windows service name> AppDirectory <root directory of app>  
nssm set <windows service name> Description <app description>
nssm start <windows service name> 

모든 것이 괜찮으면 그것은 작동하고 있을 것이다. 위의 몇몇 다른 의견제출자들은 앱을 시작하는 것에 문제가 있는데, 이는 앱 디렉터리가 설정되어 있지 않아서 파일을 찾을 수 없었기 때문일 수 있다.


반응형