Bocadillo: 또 다른 Python 프레임워크

8768 단어 frameworkpythonasync
안녕하세요 여러분. 이번 포스트에서는 Bocadillo 프레임워크를 소개하겠습니다. 아시다시피 Python에는 많은 웹 프레임워크가 있습니다.

지난 며칠 동안 저는 제 자신을 향상시키기 위해 새로운 기술을 찾고 있었습니다. GitHub에서 Bocadillo를 보았습니다.

보카딜로란?





Bocadillo는 비동기식 살사로 채워진 최신 Python 웹 프레임워크입니다.

다음 링크를 사용하여 Bocadillo의 웹사이트에 액세스할 수 있습니다: https://bocadilloproject.github.io/

GitHub에서 Bocadillo를 찾을 수 있습니다: https://github.com/bocadilloproject/bocadillo

주요 기능은 다음과 같습니다.
  • 생산적인
  • 실시간 가능
  • 유연한
  • 수행자
  • 힘을 실어주는
  • 투명

  • 투명: 모든 코드는 유형 주석으로 개발됩니다.

    WebSocket 앱을 개발할 수도 있습니다. 사실 제 생각에는 그것의 큰 주장은 WebSockets입니다.

    설치



    Bocadillo에는 프로젝트를 생성하는 CLI 도구가 있습니다. 그러나 CLI 도구를 설치할 필요는 없습니다.

    CLI 설치




    pip install bocadillo-cli
    


    프레임워크 설치




    pip install bocadillo
    


    virtualenv 사용




    mkdir my_first_app
    
    cd my_first_app
    
    virtualenv .
    
    source bin/activate
    
    pip install bocadillo
    


    이제 Bocadillo를 설치했습니다.

    최초의 보카딜로 앱



    선호하는 편집기 또는 IDE를 사용할 수 있습니다. app.py라는 파일을 만들겠습니다.

    touch app.py
    


    nano 편집기로 app.py 파일을 편집하겠습니다. 네, 히피 스타일입니다 :)

    # app.py file
    from bocadillo import App
    
    app = App()
    
    @app.route("/")
    async def index(req, res):
      res.text = "Hello Dev Family"
    


    그게 다야. Bocadillo는 Flask 프레임워크와 매우 유사합니다. 첫 번째 앱을 실행하려면 uvicorn 을 사용합니다.

    Bocadillo와 함께 제공되므로 걱정하지 마십시오. 다시 설치할 필요가 없습니다.
    uvicorn app:app --reload
    위의 명령을 사용하여 첫 번째 애플리케이션을 실행합니다. 이 명령 후에 아래와 같은 출력이 표시됩니다.

    INFO: Uvicorn running on http://127.0.0.1:8000 (Press CTRL+C to quit)
    INFO: Started reloader process [24076]
    INFO: Started server process [24078]
    INFO: Waiting for application startup.
    INFO: ASGI 'lifespan' protocol appears unsupported.
    


    이것은 우리의 웹 앱이 포트 8000에서 작동한다는 것을 의미합니다. 수고하셨습니다. 첫 번째 앱을 만들었습니다. 앱을 변경하고 백그라운드 작업을 사용합시다.

    from asyncio import sleep
    from bocadillo import App
    
    app = App()
    
    @app.route("/")
    async def index(req, res):
    
      try:
        if req.query_params["wait"] == "true":
          @res.background
          async def waitForTest():
            await sleep(15)
            print("I'll work :)")
      except:
        print(":/")
    
      res.text = "Hello Dev family"
    


    백그라운드 작업은 클라이언트가 결과를 기다리지 않고 요청이 전송된 후 처리를 수행하는 경량 메커니즘입니다. 일반적인 예로는 이메일 보내기 또는 원격 시스템에 로그 보내기가 있습니다.

    응답에 등록되면 백그라운드 작업이 즉시 실행되지 않습니다. 대신 보기가 평소처럼 종료되고 응답이 전송됩니다. 그래야만 백그라운드 작업이 실행됩니다.

    이렇게 하면 클라이언트가 응답을 받기 전에 백그라운드 작업이 완료될 때까지 기다리지 않아도 됩니다. *

    백그라운드 작업 없이 시도하는 경우 절전 모드가 완료될 때까지 기다려야 합니다. 먼저 위의 코드를 시도해야 합니다.

    1-) 두 개의 터미널을 엽니다.

    첫 번째 터미널에서 이 명령을 실행합니다.
    curl http://127.0.0.1:8000/?wait=true
    즉시 두 번째 터미널에서 이 명령을 실행하십시오.
    curl http://127.0.0.1:8000/
    모든 터미널에서 "Hello Dev family"출력을 볼 수 있습니다. 첫 번째 앱을 실행하는 원래 터미널도 살펴봐야 합니다.



    15초 후에 "I'll work"출력이 표시됩니다.

    비동기 백그라운드 작업을 사용하지 않는 경우 절전 방법이 완료될 때까지 기다려야 합니다.

    import time
    from bocadillo import App
    
    app = App()
    
    @app.route("/")
    async def index(req, res):
    
      try:
        if req.query_params["wait"] == "true":
          time.sleep(15)
          print("I'll work :)")
      except:
        print(":/")
    
      res.text = "Hello Dev family"
    


    잊지 마세요. 백그라운드 작업은 비차단이어야 합니다. 백그라운드 작업은 코루틴이기 때문에 기본 스레드를 차단하고 요청이 처리되는 것을 방지하려면 비차단이어야 합니다.

    지금은 여기까지입니다.

    다른 기능에 대해서는 Bocadillo Guide를 참조하십시오. 보카딜로를 소개합니다.

    가이드: https://bocadilloproject.github.io/guide/

    읽어 주셔서 감사합니다.

    좋은 웹페이지 즐겨찾기