Hacktoberfest 2026: los issues que los mantenedores marcaron para octubre, abiertos y aptos para principiantes. Explorar issues de Hacktoberfest

[BUG] FastAPI exception handler only catches exact exceptions

Abierto
#1,364 0 comentarios 0 reacciones 1 asignado Ver en GitHub

@EvanR-Dev ya está trabajando en esto.

Desde el 5/12/2023.

Evaluación

Este issue todavía no se ha evaluado.

Descripción

area:python-functions bug python-sdk
Investigative information
Please provide the following:
  • Timestamp: Nov 22, 2023
  • Function App name: running locally (reproduction of a production issue)
  • Function name(s) (as appropriate): see above
  • Core Tools version: ❯ func --version: 4.0.5455
Repro steps
Provide the steps required to reproduce the problem:

I'm using the AsgiMiddleware to wrap a FastApi app. If I add an exception_handler for Exception, then specific errors like ZeroDivisionError are not caught when running with func start, however, it works if I use uvicorn to run the app instead of func start. Please see https://github.com/ashic/azfn-fastapi-demo/blob/main/src/azfn_fastapi_demo/main.py

The main function is here:

from fastapi import FastAPI, Body, Response
from fastapi.responses import JSONResponse
import azure.functions as func

app = FastAPI()

@app.exception_handler(Exception)
async def catch_all(req, e:Exception):
    return JSONResponse("Catch all handler")

# @app.exception_handler(ZeroDivisionError)
# async def zero_handler(req, e:ZeroDivisionError):
#     return JSONResponse("Zero handler")

@app.post("/test")
async def test():

    a = 20 / 0

    return {
        'content': "Hello"
    }

main = func.AsgiMiddleware(app).main

If I remove the comments on the ZeroDivisionError handler, then running with func start cathes the divide by zero exception. However, with the code as is, when running with uvicorn, the Exception handler catches is, but running with func start, doesn't.

I use scripts/run-local.sh to run via uvicorn and scripts/run-local-az.sh to run with the azure function host.

Expected behavior
Provide a description of the expected behavior.

When running with func start, an Exception handler should catch all exceptions. The behaviour should be the same as when running with uvicorn.

Actual behavior
Provide a description of the actual behavior observed.

The behaviour differs from running with uvicorn. Only specific exceptions are caught.

Known workarounds
Provide a description of any known workarounds.

Other than writing a handler for every possible error, there doesn't seem to be one.

Contents of the requirements.txt file:
Provide the requirements.txt file to help us find out module related issues.

azure-functions==1.17.0
fastapi==0.104.1
uvicorn==0.24.0.post1

Lenguaje dominante
Python
Estrellas
357
Forks
117
Merge medio
13 d 12 h
PR fusionados (30 d)
2

Preparar el entorno

Abrir en Codespaces

Inicia el contenedor de desarrollo del proyecto en tu navegador, con tu propia cuenta de GitHub.

Primeros pasos

  1. Lee el issue completo y luego la guía de contribución del proyecto.
  2. Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
  3. Haz un fork del repositorio y trabaja en una rama.
  4. Abre un pull request que haga referencia al número del issue.

Más de Azure/azure-functions-python-worker

Todos los issues de Azure/azure-functions-python-worker

Issues similares

Más issues de Python

Recibe los nuevos issues en tu correo

Un resumen breve de issues de GitHub para principiantes.