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를 실행하는 몇 가지 다른 방법이 있다(이는 윈도우 서비스로 파이썬 앱을 실행할 수 있는 것으로 일반화된다). 내가 찾은 가장 일반적인 방법은 다음과 같다:
- 사용하다
- 공식 문서화된 기법 중 하나를 사용합니다.
그 중 몇 가지를 시험해 본 결과, 나는 NSSM이 가장 쉽고 효과적인 방법이라는 것을 알았다. 아래의 기본 단계:
- Windows 서비스에서 호출할 FastAPI 앱에 진입점을 추가합니다. 에는 다양한 매개 변수에 대한 유용한 정보가 있습니다. 예상 부하를 기준으로 "작업자" 변수를 조정할 수 있습니다. 예(기본 FastAPI 파일의 이름을 가정):
if __name__ == "__main__":
uvicorn.run("main:app", host="127.0.0.1", port=8000, workers=4)
Windows 시스템에 Python이 없는 경우 설치합니다. 또한 nssm을 다운로드합니다.exe
를 실행하여 Windows 상자에서 앱을 테스트합니다. 시작하여 실행되는 경우 윈도우즈 서비스로 배포하는 것이 좋습니다.
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>
모든 것이 괜찮으면 그것은 작동하고 있을 것이다. 위의 몇몇 다른 의견제출자들은 앱을 시작하는 것에 문제가 있는데, 이는 앱 디렉터리가 설정되어 있지 않아서 파일을 찾을 수 없었기 때문일 수 있다.
'개발하자' 카테고리의 다른 글
| FastAPI에서 파일을 가져올 때 브라우저 캐시를 사용하는 것은 어떻습니까? (0) | 2023.05.31 |
|---|---|
| 구글 클라우드 AI 플랫폼 주피터 노트북 인스턴스는 리셋 후에도 열리지 않고 실행 중입니다 (0) | 2023.05.31 |
| Terraform: 인스턴스가 "연결 가능"할 때까지 기다립니다 (0) | 2023.05.30 |
| TypeScript에서 중첩된 클래스를 만들 수 있습니까? (0) | 2023.05.29 |
| 주피터 노트북: 쿠키 만료 및 토큰 재설정 강제 (0) | 2023.05.28 |