だから私は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
を実行しても機能しません。
私はあなたのセットアップをテストしました、そしていくつかのチェックの後(以前に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}"
}
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。 )