>백엔드 개발 >파이썬 튜토리얼 >Python 코드를 API로 빠르게 전환하는 방법

Python 코드를 API로 빠르게 전환하는 방법

PHPz
PHPz앞으로
2023-04-14 18:28:102111검색

API 개발이라고 하면 Django REST Framework, Flask, FastAPI를 떠올릴 수 있습니다. 네, API를 작성하는 데 사용할 수 있습니다. 하지만 오늘 공유하는 프레임워크를 사용하면 기존 기능을 더 빠르게 API로 변환할 수 있습니다. Sanic.

Sanic 소개

Sanic[1]은 성능 향상을 위해 설계된 Python3.7+ 웹 서버 및 웹 프레임워크입니다. Python 3.5에 추가된 async/await 구문을 사용할 수 있으므로 효과적으로 차단을 방지하고 응답 속도를 향상시킬 수 있습니다. Sanic은 수정 및 확장이 쉬운 HTTP 서비스를 구현하기 위해 생성과 시작을 통합하는 간단하고 빠른 방법을 제공하기 위해 노력하고 있습니다. 수준의 웹 애플리케이션. 현재 Github에는 16.3,000개의 별이 있으며 광범위한 커뮤니티 지원을 받고 있습니다.

다음 기능이 있습니다:

  • 초고속 웹 서버 내장
  • 생산 준비 완료
  • 매우 확장 가능
  • ASGI 지원
  • 간단하고 직관적인 API 디자인
  • 커뮤니티 보장
  • 기존 코드를 API

이제 코드를 API로 변환하는 방법을 살펴보겠습니다. function.py에 이미 두 개의 함수가 작성되어 있다고 가정해 보겠습니다.

import datetime


def get_datetime():
return datetime.datetime.now().strftime("%Y-%m-%d %H:%M:%S")


def sum_x_y(x, y):
return x + y

API로 변환하려면 다른 sanic_app.py를 작성하세요.

from sanic import Sanic, json
from functions import get_datetime, sum_x_y

app = Sanic("CodeToAPI")
HOST = "localhost"
PORT = 8000

@app.route("/getdatetime")
async def getdatetime(request):
return json({"now": get_datetime()})

@app.get('/sumxy')
async def sumxy(request):
parameters = request.args
result = sum_x_y(int(parameters['x'][0]), int(parameters['y'][0]))
return json({'result': result})


if __name__ == "__main__":
app.run(host=HOST, port=PORT, debug=False)

그러면 python sanic_app.py를 실행하여 API 서비스를 시작하려면:

Python 코드를 API로 빠르게 전환하는 방법

실행 결과에서 우리는 sanic이 이미 프로덕션 환경 모드에서 실행되고 있음을 알 수 있습니다. 이는 기본 제공되는 다른 웹 프레임워크와는 다릅니다. 개발용 서버임을 분명히 하세요. Sanic의 상황은 정반대입니다. 내장 서버는 프로덕션 환경에서 직접 사용할 수 있습니다.

인터페이스 테스트에 컬을 사용할 수 있습니다:

❯ curl "http://localhost:8000/getdatetime"
{"now":"2022-07-25 06:34:25"}%❯ curl "http://localhost:8000/sumxy?x=12&y=34"
{"result":46}%

post를 사용하고 json을 사용하여 매개변수를 전달하는 경우에도 간단합니다.

@app.post('/sumxy')
async def sumxy(request):
parameters = request.json
print(parameters)
result = sum_x_y(int(parameters['x']), int(parameters['y']))
return json({'result': result})

curl은 다음과 같이 테스트됩니다.

❯ curl -X 'POST' 'http://localhost:8000/sumxy' -H "Content-Type: application/json" -d '{"x":10,"y":20}'
{"result":30}%

다른

Sanic에 배포됨 ASGI와도 호환되는 자체 서버(대부분 프로덕션을 위해 자체 서버를 가져오는 것이 좋습니다). 이는 선호하는 ASGI 서버를 사용하여 Sanic을 실행할 수 있음을 의미합니다. 현재 Daphne, Uvicorn(FastAPI가 사용하는 것) 및 Hypercorn이라는 세 가지 주류 ASGI 서버가 있습니다.

Gunicorn에도 배포 가능:

gunicorn myapp:app --bind 0.0.0.0:1337 --worker-class sanic.worker.GunicornWorker

정적 파일 처리 및 기록 요청 액세스 로그. 더 나은 성능을 얻으려면 Nginx를 프록시로 사용하고 Nginx가 이러한 방식으로 액세스 로그 및 정적 파일을 처리하도록 할 수 있습니다. Python으로 처리하는 것보다 빠릅니다.

위 내용은 Python 코드를 API로 빠르게 전환하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
이 기사는 51cto.com에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제