소개
Python 애플리케이션을 개발할 때 FastAPI는 고성능 솔루션을 빌드하는 데 가장 좋은 선택입니다. 속도, 간단성, 그리고 비동기 프로그래밍 지원을 제공하므로 현대적인, 확장 가능한 애플리케이션을 개발하는 데理想的합니다.
이 튜토리얼에서는 NoSQL 데이터베이스와 함께 FastAPI 애플리케이션을 설정하는 절차를 안내드릴 것입니다. 데이터를 저장하고 관리할 때 NoSQL 데이터베이스는 유연성과 확장성을 제공하므로 다양하고 복잡한 데이터 구조를 처리해야 하는 애플리케이션에게 좋은 선택입니다.
사전 조건
시작하기 전에 다음을 확보해야 합니다:
-
Ubuntu를 실행하는 서버와 sudo 권한을 가진 비루트 사용자, 그리고 활성화된 방화벽. 이 설정을 위한 지침은 이 목록에서 배포판을 선택하고 초기 서버 설정 가이드를 따르십시오. Ubuntu의 지원되는 버전을 사용하십시오.
-
Linux 명령어 行의 熟悉도。熟悉도를 들여다 보고자 하시면, Linux 명령어 行 入门 guide를 방문할 수 있습니다.
-
Ubuntu 터미널에서
sudo apt-get update
명령을 실행하여 시스템이 설정된 저장소에서 사용 가능한 소프트웨어의 最新 version과 보안 업데이트를 가지고 있는지 확인하십시오.
이 지침은 Ubuntu의 最新 버전들에 대해 유효합니다: Ubuntu 24.04, Ubuntu 22.04, 그리고 Ubuntu 20.04. Ubuntu 18.04 이하의 버전을 사용하고 있다면, Ubuntu가 이러한 버전들에 대한 지원을 더 이상 제공하지 않기 때문에, 더 최신 버전으로 업그레이드하는 것을 추천합니다. 이 가이드 모음은 贵方의 Ubuntu 버전을 upgrade하는 것을 도울 것입니다.
단계 1 – 您的 컴퓨터에 Python 환경을 설정하기
이 튜토리얼 내에서, python3
패키지를 사용하여 명령어를 실행합니다. 最新의 Ubuntu 버전들은 Python 3을 설치하고 있으므로, 其 Installation를 확인하기 위해 다음 명령어를 실행하십시오:
이러한 명령어가 에러를 반환하면, 다음 명령어를 실행하여 패키지를 安装/重新 安装할 수 있습니다:
次에, pip
를 安装하는 것이 중요합니다. 이를 사용하면 Python 패키지와 그들의 依存성을 안전하게 安装 할 수 있습니다.
단계 2 – 仮想 환경을 생성하기
Ubuntu 24.04 이하의 버전을 사용하고 있다면, 仮想 환경을 생성할 필요가 없습니다. 그러나 프로젝트의 依存성을 격리하는 것은 좋은 惯例입니다.
Python 3.11 부터 pip 22.3 시에는 PEP 668로 새롭게 정의된 것을 확인할 수 있으며, Python 기본 환경을 “외부 관리”로 표시하는 것이며, 이를 意义하기 위해 가상 환경 안에서 작업하지 않으면 pip
를 사용하여 パッケージ를 성공적으로 インストール할 수 없다는 의미입니다.
이 단계에서는 윈도우 terminal에서 다음 명령어 조합을 실행하여 پروژه의 가상 환경을 생성하게 됩니다.
이 명령어는 가상 환경을 생성하기 위해 필요한 venv
パッケージ을 インストール합니다.
이 명령어는 작업 디렉터리 안에 가상 환경 fastapi-env
를 생성합니다. 이 환경 안에서 작업할 수 있게 해야하므로 활성화해야 합니다.
명령어의 실행이 성공적이면 terminal에서 이러한 형식의 프리픽스가 보입니다.
(fastapi-env) user@machine:~$
이제 이 가상 환경 안에서 필요한 依存성을 설치할 수 있습니다.
단계 3 – 필요한 라이브러리와 パッケージ 설치
이 단계에서는 이 튜orial을 따라하기 위해 필요한 몇 가지 パッケージ과 라이브러리를 설치하게 됩니다.
먼저 FastAPI 애플리케이션을 구축하는 데 필요한 fastapi
와 FastAPI 애플리케이션을 실행하는 데 필요한 uvicorn
을 설치해 보겠습니다.
이 튜토리얼에서는 NoSQL 데이터베이스로 MongoDB를 사용할 것입니다. FastAPI 내에서 MongoDB와 상호 작용하기 위해 비동기 Python 드라이버인 motor
를 설치해야 합니다.
단계 4 – 우분투에 MongoDB 설치 및 설정
Ubuntu 기계에 MongoDB를 설치하려면 터미널에서 다음 명령어 세트를 실행합니다:
성공적으로 실행되면 이 명령은 에코 매개변수를 반환합니다. 이제 빠르게 다음을 실행하세요:
이 명령을 실행하여 MongoDB 키를 설정한 후 최신 업데이트를 받을 수 있습니다.
이제 시스템에 MongoDB 설치에 필요한 openssl
종속성을 설치해야 합니다.
실행하면 서비스를 다시 시작하라는 메시지가 표시됩니다. 다시 시작한 후 다음 명령어를 사용하여 MongoDB를 설치하세요:
MongoDB 서비스를 시작하고 활성화하세요:
다음 명령어를 실행하여 MongoDB 서비스 상태를 확인하고 연결을 테스트할 수 있습니다:
스텝 5 – FastAPI 애플리케이션 생성
다음 단계는 FastAPI 애플리케이션을 생성하는 것입니다. 작업 디렉토리에서 database.py
파일을 생성합니다:
이这样做는 빈 텍스트 에디터가 열립니다. 데이터베이스 연결 로직을 여기에 쓰십시오.
mydatabase
의 mycollection
이 어떤 데이터로 채워져 있을 것으로 가정하고, 애플리케이션의 논리를 포함하는 main.py
를 생성합니다. 다음의 FastAPI 앱에서는 database.py
를 사용하여 데이터베이스 연결을 설정하고 AI 예측을 위한 라우터를 정의합니다. 이러한 라우터를 사용하여 입력을 유효성 검사합니다.
텍스트 에디터에 논리를 쓰십시오:
이 애플리케이션이 하는 일에 대한 분석입니다:
- sklearn의 선형 회귀 모델: 이 모델은 단일 입력 특성을 기반으로 출력을 예측합니다.
- Python 모델からInputData를 받기: 이것은 예측 엔드포인트에서 기대되는 입력 구조를 정의합니다. 이 때, 그 것은
float
입니다. - MongoDB ルーティング: 이 ルーTE
/items/
와POST /items/
는 당신의 MongoDB コレクションに 아이템을 가져오거나 삽입할 수 있습니다.
Шаг 6 – FastAPI 应用程序 실행
이 응용 프로그램을 성공적으로 실행하려면, 응용 프로그램에서 사용하는 라이브러리와 パッケ이지를 설치해야 합니다.
지금, 이 응용 프로그램을 실행하는 데 다음 명령어를 사용하세요:
이 명령어의 출력은 다음과 같습니다:
OutputINFO: Will watch for changes in these directories: ['/path/to/your/project']
INFO: Uvicorn running on http://127.0.0.1:8000 (Press CTRL+C to quit)
INFO: Started reloader process [XXXXX] using statreload
INFO: Started server process [XXXXX]
INFO: Waiting for application startup.
INFO: Application startup complete.
FastAPI는 Swagger UI를 사용하여 자동으로 인터렉티브한 API 文档을 생성합니다. 이를 통해 http://127.0.0.1:8000/docs
로 이동하여 접근할 수 있습니다.
curl 같은 도구를 사용하여 curl
또는 Postman을 사용하여 입력 기반으로 값을 예측하는 엔드포인트에 호출할 수 있습니다.
curl -X POST "http://127.0.0.1:8000/predict/" -H "Content-type: application/json" -d '{"feature": 3}'
Step 7 [OPTIONAL] – Docker Compose를 사용하여 응용 프로그램 실행
docker-compose
을 사용하여 您的应用程序을 컨테이너화 하고 실행할 수 있습니다. 您的应用程序을 Containerizing하면 배포 과정을 精简하여 您的应用程序을 배포하고, 확장하고, 관리하는 것이 더 容易하게 됩니다. 您的应用程序을 Dockerfile로 정의하기 위해서는 Docker Compose를 사용하여 FastAPI 应用程序 배포에 나와 있는 단계를 따라야 합니다.
결론
이 튜토리얼에서 您는 MongoDB와 함께 FastAPI 应用程序을 성공적으로 설정하는 方法을 배웠습니다., 이를 통해 입력 예측을 저장하고 읽을 수 있는 간단한 AI-기반 应用程序을 만들 수 있습니다.
FastAPI와 NoSQL 데이터베이스의 조합은 AI-기반 应用程序을 빌드하고 확장하는 것을 위한 강력하고 靈活한 환경을 제공합니다.
Source:
https://www.digitalocean.com/community/tutorials/set-up-fastapi-app-with-nosql-db