반응형
FastAPI, 현재 실행 프로세스 및 환경 정보 예제
글. 수알치 오상문
아래는 현재 실행 프로세스 및 환경 정보를 확인하는 FastAPI 예제입니다.
import time
import datetime
import os
from fastapi import FastAPI
app = FastAPI()
@router.get("/process-info, status_code = 200)
async def process_info():
"""현재 실행중인 프로세스 및 환경 정보 반환
Returns:
[json]: 결과
"""
pid = os.getpid() # 현재 프로세스ID
# OS에 맞게 PID의 기타 정보 수집
if platform.system() == "Windows":
command = ["tasklist", "/FI", f"PID eq {pid}"]
encoding = "cp949" # 윈도우 기본 인코딩 설정
else:
command = ["ps", "-p", str(pid), "-o", "comm="]
encoding = "utf-8" # 그외(리눅스) 기본 인코딩 설정
process = subprocess.Popen(command, stdout=subprocess.PIPE)
stdout, stderr = process.communicate()
process_name = stdout.decode(encoding).strip().splitlines()[-1]
if platform.system() == "Windows":
process_name = process_name.split(None, 2)[0]
program_name = "기타"
if len(sys.argv):
program_path = sys.argv[0].lower()
if 'uvicorn' in program_path:
program_name = "uvicorn"
print(">>> uvicorn")
elif 'gunicorn' in program_path:
program_name = "gunicorn"
print(">>> gunicorn")
else:
program_name = program_path.split("\\")[-1]
return {
"message": f"Current Process-ID: {pid}",
"program_name": program_name, # 'uvicorn, gunicorn, ...
"process_name": process_name, # 'python.exe'
"sys_args": sys.argv, # 프로세스 실행 인자 환경 정보
}
반응형
'FastAPI' 카테고리의 다른 글
How to Use FastAPI: A Detailed Python Tutorial (1) | 2023.10.23 |
---|---|
FastAPI, NGINX 사용 시 Client IP 확인 (0) | 2023.10.18 |
FastAPI, 파일 반환하기 (0) | 2023.08.13 |
FastAPI, Redis를 이용한 데이터 공유 (0) | 2023.08.12 |
FastAPI, 파일 업로드와 다운로드 API 예제 (0) | 2023.08.12 |