Para extender el tiempo de respuesta en una aplicación FastAPI y evitar el error «504 Gateway Time-out», puedes ajustar el tiempo de espera del servidor web en el que estás ejecutando tu aplicación.
El tiempo de espera es el período durante el cual el servidor espera una respuesta antes de considerar que la solicitud ha fallado debido a que se ha excedido el tiempo de espera.
Aquí hay dos enfoques que puedes seguir, dependiendo de cómo estés ejecutando tu aplicación FastAPI:
- Gunicorn (Usando Gunicorn como servidor web): Si estás utilizando Gunicorn como servidor web para ejecutar tu aplicación FastAPI, puedes especificar el tiempo de espera usando la opción
--timeout
al ejecutar Gunicorn. Por ejemplo:
gunicorn -k uvicorn.workers.UvicornWorker -t 600 myapp:app
En este ejemplo, myapp
es el nombre de tu módulo FastAPI y app
es la instancia de tu aplicación FastAPI. El valor 600
representa el tiempo de espera en segundos (10 minutos en este caso). Puedes ajustar este valor según tus necesidades.
- Uvicorn (Usando Uvicorn como servidor web): Si estás utilizando Uvicorn como servidor web para ejecutar tu aplicación FastAPI, puedes especificar el tiempo de espera usando la opción
--timeout-keep-alive
al ejecutar Uvicorn. Por ejemplo:
uvicorn myapp:app --host 0.0.0.0 --port 8000 --timeout-keep-alive 600
Al igual que en el primer ejemplo, myapp
es el nombre de tu módulo FastAPI y app
es la instancia de tu aplicación FastAPI. El valor 600
representa el tiempo de espera en segundos.
Ajusta el tiempo de espera según la duración esperada de tu operación. Sin embargo, ten en cuenta que establecer un tiempo de espera demasiado alto puede hacer que tus aplicaciones sean más susceptibles a bloqueos prolongados. Es importante encontrar un equilibrio entre extender el tiempo de respuesta y garantizar que tu aplicación aún sea capaz de manejar múltiples solicitudes concurrentes de manera eficiente.
Ingeniero en Informática, me encanta crear cosas o arreglarlas y darles una nueva vida. Escritor y poeta. Más de 20 APPs publicadas y un libro en Amazon.