python 5 개 최고급 비동기 프레임 추천
만약 당신 이 웹 개발 자라 면,현재 비동기 웹 프레임 워 크 에 더 많은 선택 이 있 습 니 다!
1、Tornado
토 나 도 는 새로운 프레임 워 크 가 아니 었 다.처음에는 프 렌 드 피 드(이후 페 이 스 북 에 인수)가 2009 년 발표 했다.처음부터 비동기 프로 그래 밍 기능 을 제공 합 니 다.
Tornado 는 웹 프레임 워 크 뿐만 아니 라 비동기 모듈 을 많이 내장 하여 비동기 응용 을 구축 할 수 있 습 니 다.이 모듈 들 은 다음 을 포함한다.
import tornado.ioloop
import tornado.web
class MainHandler(tornado.web.RequestHandler):
def get(self):
self.write("Hello, world")
def make_app():
return tornado.web.Application([
(r"/", MainHandler),
])
if __name__ == "__main__":
app = make_app()
app.listen(8888)
tornado.ioloop.IOLoop.current().start()
Tornado 는 Python 커 뮤 니 티 에서 많은 추종 자 를 가지 고 있 으 며 경험 이 풍부 한 구조 사 들 이 이 를 이용 하여 기능 이 강 한 시스템 을 구축 하고 있다.이 프레임 워 크 는 오랫동안 병발 문 제 를 해결 해 왔 으 나 WSGI 표준(대부분의 Python 라 이브 러 리 가 동기 화 되 고 있 음)을 지원 하지 않 아 주류 가 되 지 못 했다.국내 에 서 는 토 란 도 를 기반 으로 한 것 으로 알려 져 있다.
2、 Snaic
Sanic 은 3 년 동안 태 어 난 프레임 워 크 입 니 다.3.6 이상 Python 버 전 만 지원 하고 통용 되 는 4.567914./4.567914.문법 을 지원 합 니 다.상 자 를 열 면 바로 사용 할 수 있 기 때문에 많은 문 서 를 읽 지 않 아 도 HTTP 프로 세 서 를 쓸 수 있 습 니 다.
키 워드 를 제외 하고 문법 적 으로 fllask 기반 과 차이 가 없다.
from sanic import Sanic
from sanic.response import json
app = Sanic()
@app.route("/")
async def test(request):
return json({"hello": "world"})
if __name__ == "__main__":
app.run(host="0.0.0.0", port=8000)
사 닉 은 파 이 썬 세계 에서 가장 유행 하고 인기 있 는 비동기 프레임 이 라 고 할 수 있다.이것 은 프로젝트 에 필요 한 모든 기능 을 가지 고 있 습 니 다.경로,미들웨어,Cookie,버 전 관리,청사진,클래스 기반 보기,정적 파일,흐름,sockets,그 밖 에 템 플 릿,데이터 베이스 구동,파일 I/O,대기 열 등 을 통합 할 수 있 습 니 다.3、Vibora
비보 라 와 사 닉 은 가장 빠 른 파 이 썬 웹 서버 가 되 기 위해 노력 하고 있다.그들 사이트 의 첫 페이지 에는 프레임 워 크 비교 그림 이 있다.
비보 라 는 다른 프레임 보다 몇 배,경쟁 사인 사 닉 보다 두 배 이상 빠르다 고 주장 했다.물론 이 기준 테스트 는 회의 적 이 어야 한다.
비록 문법 과 기능 에 있어 서 Vibora 는 Sanic 과 견 줄 수 있 지만 저 는 Sanic 이 더욱 성숙 하 다 고 생각 합 니 다.왜냐하면 그것 은 이미 오랫동안 존재 하고 더 큰 지역 사 회 를 가지 고 있 기 때 문 입 니 다.
from vibora import Vibora, JsonResponse
app = Vibora()
@app.route('/')
async def home():
return JsonResponse({'hello': 'world'})
if __name__ == '__main__':
app.run(host="0.0.0.0", port=8000)
4、Quart만약 당신 이 Flask 를 좋아 하지만 비동기 도 지원 한다 면,Quart 는 반드시 좋아 할 것 입 니 다.
쿼 트 는 ASGI 기준 에 부합 하 며,이 기준 은 WSGI 기준 후계 제품 이 며 비동기 지원 을 제공한다.Quart 는 Flask 와 비슷 할 뿐만 아니 라 Flask API 와 호 환 됩 니 다!이 프레임 워 크 의 저 자 는 Flask 스타일 을 유지 하고 싶 어 합 니 다.비동기,WebSocket,HTTP 2 지원 만 추가 합 니 다.따라서 Flask 문서 에서 Quart 의 용법 을 배 울 수 있 습 니 다.Quart 의 함수 가 비동기 적 이라는 것 만 기억 하면 됩 니 다.
from quart import Quart
app = Quart(__name__)
@app.route('/')
async def hello():
return 'hello'
app.run()
거의 플 라 스 크 같 아 요.Quart 는 Flask 에서 진 행 된 것 이기 때문에 Flask 의 모든 기능 은 경로,미들웨어,세 션,템 플 릿,청사진 등 을 사용 할 수 있 습 니 다.실제로 Quart 내부 에서 Flask 확장 플러그 인 을 직접 사용 할 수도 있다.그러나 문 제 는 Python 3.7+만 지원 한 다 는 것 이다.
5、FastAPI
FastAPI 는 비동기 Python 프레임 워 크 에서 기능 적 이 고 문서 가 가장 풍부 한 프레임 워 크 인 것 같 습 니 다.
이 프레임 워 크 의 저 자 는 Django 에서 Sanic 까지 의 현대 프레임 워 크 와 NestJS(Node.js,Typescript Web 프레임 워 크)를 깊이 연구 했다.
문법 은 심지어 우리 가 만난 다른 틀 보다 더 재미있다 고 할 수 있다.
rom fastapi import FastAPI
app = FastAPI()
@app.get("/users/me")
async def read_user_me():
return {"user_id": "the current user"}
@app.get("/users/{user_id}")
async def read_user(user_id: str):
return {"user_id": user_id}
FastAPI 가 다른 프레임 워 크 보다 뛰어난 비장의 무기 목록:API 문서 자동 생 성:API 인 터 페 이 스 를 작성 하면 SwaggerUI,ReDoc 등 표준 에 맞 는 UI 를 사용 하여 API 를 사용 할 수 있 습 니 다.
그럼 성능 은 요?FastAPI 는 Starlette 라 이브 러 리 를 기반 으로 구 축 된 것 으로 노드 와 성능 이 일치 할 수 있 으 며,어떤 경우 에는 Go 와 도 일치 할 수 있다.한 마디 로 하면 저 는 FastAPI 가 Python 의 최고급 비동기 프레임 워 크 가 될 것 이라는 느낌 이 듭 니 다.
총결산
현재 파 이 썬 의 비동기 생태 에 많은 일이 일어나 고 있다.새로운 프레임 워 크 가 생 겼 습 니 다.오래된 프레임 워 크 는 다시 쓰 고 있 습 니 다.많은 라 이브 러 리 에서 비동기 행 위 를 지원 하기 시 작 했 습 니 다.웹 프레임 워 크 에 대해 Python 은 이미 준비 가 되 어 있어 뛰어난 성능 을 제공 할 수 있 습 니 다.오랫동안 Node 나 go 로 이전 하 는 것 을 고려 하고 있다 면 이 제 는 필요 없다.
원문 참조 연결:
이상 은 python 5 개의 최고급 비동기 프레임 워 크 가 추천 하 는 상세 한 내용 입 니 다.python 비동기 프레임 워 크 에 관 한 자 료 는 다른 관련 글 을 주목 하 십시오!
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
로마 숫자를 정수로 또는 그 반대로 변환그 중 하나는 로마 숫자를 정수로 변환하는 함수를 만드는 것이었고 두 번째는 그 반대를 수행하는 함수를 만드는 것이었습니다. 문자만 포함합니다'I', 'V', 'X', 'L', 'C', 'D', 'M' ; 문자열이 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.