web-dev-qa-db-ja.com

HerokuでUVICORNを実行する方法は?

だから私はfastAPIのコーディング方法を理解し、fastAPI( https://fastapi.tiangolo.com/ )で作業したスクリプトをherokuにデプロイする準備ができましたが、問題はherokuにリクエストすると、次のように返されます。

<html>
  <head>
    <title>Internal Server Error</title>
  </head>
  <body>
    <h1><p>Internal Server Error</p></h1>

  </body>
</html>

つまり、スクリプトはオンになっていますが、エラーは表示されず、ローカルで完全に機能します。

問題が発生しているログを表示できませんが、procfileが正しいかどうかわからないので、それをまったく編集していませんが、私はこれにかなり慣れていません。私はherapiでfastapiスクリプトを実行する方法を尋ねるためにここにいますか?

スクリプトを実行できるようにするには、コマンドuvicorn main:app --reloadを使用する必要がありますが、コマンドpy main.pyを実行しても機能しません。

6
Thrillofit86

私はあなたのセットアップをテストしました、そしていくつかのチェックの後(以前にHerokuを使用したことがありません)私はあなたのuvicornが指定されたポートに決してバインドしないと思います(heroku-cliコマンドでしたheroku localあなたのために働いていますか?)

Procfileは次のようになります。

web: uvicorn src.main:app --Host=0.0.0.0 --port=${PORT:-5000}

この例では、ソースコードが 'src'という名前のサブフォルダー内にあり、空の__init__.py(Pythonモジュールを示し、代わりにsrcをPYTHONPATHに追加したい場合があります。app.jsonを参照してください)とmain.py fastapiアプリを含みます。

import socket
import sys

from fastapi import FastAPI

app = FastAPI()

hostname = socket.gethostname()

version = f"{sys.version_info.major}.{sys.version_info.minor}"


@app.get("/")
async def read_root():
    return {
        "name": "my-app",
        "Host": hostname,
        "version": f"Hello world! From FastAPI running on Uvicorn. Using Python {version}"
    }

私は github で私の作業例をオープンソース化しました herok (今のところ)で表示できます

3

FastAPIを設定して、ワーカープロセスとしてuvicornを使用してGunicornで実行することもできます。以下は、Herokuがアプリを起動して実行するために使用するProcfileに保持できるコマンドラインです。以下のコマンドは、3つのワーカープロセスでアプリを起動します

web: gunicorn -w 3 -k uvicorn.workers.UvicornWorker main:app

ステップバイステップの詳細なビデオについては、HerokuにFastAPIをわずか6分でデプロイする方法 を詳しく説明したこのビデオチュートリアルにアクセスできます または詳細なウォークスルーを行うことができます。 =(python Herast on FastAPI on this blog post。

2
navule