This is my first effort to use VSCode for python development and I'm running into problems I have no idea why.
The immediate problem is I can't seem to get uvicorn to route my browser request to my fastAPI module. Here's the relevant parts of my code:
import uvicorn
from fastapi import FastAPI, Header, HTTPException, Request, status, Response
from fastapi.middleware.cors import CORSMiddleware
from fastapi.responses import JSONResponse
from pydantic import BaseModel
# initialize (FAST) API framework.
app = FastAPI()
# configure Cross-Origin Resource Sharing configuration
# TODO : Have to enter all the allowed origins
origins = ["*"]
app.add_middleware(
CORSMiddleware,
allow_origins=origins,
allow_credentials=True,
allow_methods=["*"],
allow_headers=["*"],
)
if __name__ == "__main__":
uvicorn.run(app, host="127.0.0.1", port=8000)
################################
# endpoint definitions #
################################
# test endpoint
@app.get("/")
async def test():
x=0
return x
So I set my breakpoint on the "x = 0" statment and run the debugger and all is well no exceptions and uvicorn seems to be waiting for a request.
My browser request is http://127.0.0.1:8000/
What I see in the terminal window is this:
INFO: Started server process [22764]
INFO: Waiting for application startup.
INFO: Application startup complete.
INFO: Uvicorn running on http://127.0.0.1:8000 (Press CTRL+C to quit)
INFO: 127.0.0.1:64541 - "GET /incentives HTTP/1.1" 404 Not Found
INFO: 127.0.0.1:64544 - "GET / HTTP/1.1" 404 Not Found
I've poured through the documentation I can find and tried a few permutations but to no success. I never hit the break-point.
I've also tried setting up a "launch.json" file under the VSCode folder but then doesn't seem to do anything, and does not seem to start the uvicron task or set my environment variables.
You have an ordering problem. Your function never gets defined, because uvicorn.run
never returns. Define the functions FIRST.