How can I run the fast-api server using Pycharm? How can I run the fast-api server using Pycharm? python python

How can I run the fast-api server using Pycharm?


Method-1: Run FastAPI by calling uvicorn.run(...)

In this case, your minimal code will be as follows,

# main.pyimport uvicornfrom fastapi import FastAPIapp = FastAPI()@app.get("/")async def read_root():    return {"Hello": "World"}if __name__ == "__main__":    uvicorn.run(app, host="0.0.0.0", port=8000)

Normally, you'll start the server by running the following command,

python main.py

Pycharm Setup

For this setup, and now, you can set the script path in Pycharm's config

Pycharm-uvicorn.run

Notes

  • Script Path: path to the FastAPI script
  • Python Interpreter: Choose your interpreter/virtual environment
  • Working Directory: Your FastAPI project root

Method-2: Run FastAPI by calling uvicorn command

In this case, your minimal code will be as follows,

# main.pyfrom fastapi import FastAPIapp = FastAPI()@app.get("/")async def read_root():    return {"Hello": "World"}

Normally, you'll start the server by running the following command,

uvicorn main:app --reload

Pycharm Setup

For this setup, and now, you can set the script path in Pycharm's config

Pycharm-uvicorn.command

Notes

  • Module name: set to uvicorn
  • [Optional] Script: Path to uvicorn binary. You will get the path by executing the command, which uvicorn , inside your environment. (See this image)
  • Parameters: The actual parameters of uvicorn command
  • Python Interpreter: Choose your interpreter/virtual environment
  • Working Directory: Your FastAPI project root


You can do it without adding code to main.py

  1. In target to run instead of Script path choose Module name
  2. In Module name type uvicorn
  3. In parameters app.main:app --reload --port 5000

enter image description here


Try to call uvicorn inside your code. e.g:

from fastapi import FastAPIimport uvicornapp = FastAPI()@app.get("/")async def read_root():    return {"Hello": "World"}if __name__ == "__main__":    uvicorn.run(app, host="0.0.0.0", port=5000, log_level="info")

Reference