DEV Community

Cover image for Host Your Fastapi server on Heroku for Free...
Ajo Alex
Ajo Alex

Posted on

 

Host Your Fastapi server on Heroku for Free...

Create a Fastapi project

for that install some pip packages

pip install fastapi
Enter fullscreen mode Exit fullscreen mode

and you need a ASGI server for production
here we use uvicorn

pip install uvicron
Enter fullscreen mode Exit fullscreen mode

and you need an another package named gunicorn

pip install gunicorn
Enter fullscreen mode Exit fullscreen mode

write some code

Here we have to create a file for our python code. so create a file named main.py and write some code like this

from fastapi import FastAPI

app = FastAPI()


@app.get("/")
def read_root():
    return {"Hello": "World"}


@app.get("/items/{item_id}")
def read_item(item_id: int, q: Optional[str] = None):
    return {"item_id": item_id, "q": q}
Enter fullscreen mode Exit fullscreen mode

Run the code

uvicorn main:app --reload
Enter fullscreen mode Exit fullscreen mode

this will run your app in localhost and the default port will be 8000. Here main is the filename and app is the fastapi object.

Next is adding some stuffs for hosting.

Create requirements.txt

for creating the file just run:

pip freeze > requirements.txt
Enter fullscreen mode Exit fullscreen mode

it will create the file and contents like be this

anyio==3.4.0
asgiref==3.4.1
certifi==2021.10.8
charset-normalizer==2.0.9
click==8.0.3
fastapi==0.70.1
gunicorn==20.1.0
h11==0.12.0
idna==3.3
pydantic==1.8.2
requests==2.26.0
sniffio==1.2.0
starlette==0.16.0
typing-extensions==4.0.1
urllib3==1.26.7
uvicorn==0.16.0
Enter fullscreen mode Exit fullscreen mode

Its the list of packages need to run your app.

Create Procfile

create a file named Procfile without any extensions and paste the below code

web: gunicorn -w 3 -k uvicorn.workers.UvicornWorker main:app
Enter fullscreen mode Exit fullscreen mode

this contain the running script for execute your app
here main is the python file name and app is the fastapi object. so it can be changed..

Now the app is ready for deploy.

Create a Github Repo and push the code to it
and create a new heroku app linked with the respective github repo in heroku dashboard.

After bulid finished in heroku just go to your-app-url/docs for get your api documentation

Latest comments (0)

Timeless DEV post...

Git Concepts I Wish I Knew Years Ago

The most used technology by developers is not Javascript.

It's not Python or HTML.

It hardly even gets mentioned in interviews or listed as a pre-requisite for jobs.

I'm talking about Git and version control of course.

One does not simply learn git