in

Cómo implementar una aplicación FastAPI en Heroku de forma gratuita

1HoXZa 3VSK

Cómo implementar una aplicación FastAPI en Heroku de forma gratuita

Cómo mantener su aplicación activa las 24 horas del día, los 7 días de la semana

Shinichi Okada

2 de enero·6 min de lectura

Imagen de mohamed_hassan en Pixabay

Introducción

Heroku es una plataforma en la nube como servicio (PaaS) compatible con Ruby on Rails, Java, Node.js, Scala, Clojure, Python, PHP y Go. La versión gratuita de Heroku ofrece entre 550 y 1000 horas de dinamómetro al mes. Sus aplicaciones duermen después de 30 minutos si nadie está usando su aplicación. Sus aplicaciones siempre serán gratuitas si sus horas de dinamómetro mensuales están dentro del límite.

Los Dynos son contenedores Linux virtualizados y aislados en la plataforma Heroku.

En este artículo, aprenderá lo fácil que es configurar y ejecutar su proyecto FastAPI y hacerlo activo las 24 horas del día, los 7 días de la semana en Heroku.

Soy curActualmente aloja este sitio web FastAPI en Heroku como demostración.

Table of Contents
· Introduction
· Git
· Setting up Your Heroku Account
· How to Create the requirement.txt for FastAPI on Heroku
· runtime.txt
· Procfile
· Environment Variables
· How to Upload to Heroku
· How to Add a Subdomain
· How to Keep Your App Active 24/7
∘ cron-job.org
· How to fix a failed cron-job
∘ Kaffeine
· How to Rename Your App
· How to ssh to Heroku
· Conclusion
· Newsletter
· References

Git

Utilizo Gitstart para automatizar la inicialización de Git. Desde tu terminal, corre git init. Agregar .gitignore y el archivo README y confirme con un mensaje. Esto crea un nuevo repositorio en Github y enviará todos los archivos.

$ mkdir my_new_project
$ cd my_new_project
$ gitstart

Configuración de su cuenta de Heroku

Las cuentas personales reciben una base de 550 horas dinámicas gratuitas cada mes. Además de estas horas base, cuentas que verifiquen con tarjeta de crédito [1] recibirá 450 horas adicionales agregadas al mensual Cuota libre de dinamómetro. [2]

Necesita agregar claves SSH a Heroku.[3]
Instale la CLI de Heroku [4]
Luego inicie sesión en Heroku desde su terminal y cree una aplicación Heroku:

$ heroku login
$ heroku create
heroku crea salida. Imagen del autor.

Puede agregar un dominio personalizado a su aplicación Heroku.[5]

Cómo crear el requisito.txt para FastAPI en Heroku

Heroku requiere el requirement.txt para instalar sus paquetes de Python. pipreqs [6] lo genera en función de las importaciones en su proyecto.

$ pip install pipreqs
$ cd my_new_project
$ pipreqs ./
# if you already have the requirement.txt
$ pipreqs --force ./

Ya que pipreqs lo genera en base a import, debe agregar lo siguiente a la requirements.txt a mano.

uvicorn==0.12.3
aiofiles==0.6.0
python-multipart==0.0.5
jinja2==2.11.2

Necesitas el uvicorn para iniciar un servidor ASGI en Heroku. Necesitas el aiofiles para sus archivos estáticos. Si su proyecto tiene un formulario, agregue el python-multipart. Si su proyecto utiliza un motor de plantillas, agregue el jinja2.

runtime.txt

Heroku usa la versión predeterminada de Python. Para usar una determinada versión de Python, agregue runtime.txt con su versión de Python. Por ejemplo:

python-3.8.6

Procfile

Heroku requiere Procfile.[7]

Si tienes el main.py en el directorio de la aplicación, agregue lo siguiente:

web: uvicorn app.main:app --host=0.0.0.0 --port=${PORT:-5000}

Si tienes el main.py en el directorio raíz:

web: uvicorn main:app --host=0.0.0.0 --port=${PORT:-5000}

Variables de entorno

Heroku no usa el .env expediente. En su lugar, agregue valores en su .env archivo a Config Vars. Puede encontrarlo en la pestaña Configuración.

Agregar variables de entorno a Config Vars. Imagen del autor.

Cómo subir a Heroku

Ahora está listo para enviar su proyecto a Heroku:

$ git push heroku main
$ heroku open

los heroku open Los comandos abren su proyecto en su navegador.

git push heroku main en la terminal. Imagen del autor.

Cómo agregar un subdominio

Estoy usando Cloudflare y esto es lo que tenía que hacer.

Seleccione CNAME para el tipo. Agregue su nombre de subdominio para el Nombre. Agregue su dominio Heroku para el Contenido. Su nombre de dominio de Heroku es algo así como, serene-example-4269.herokuapp.com.

La siguiente imagen muestra cómo agregar toolbox.mywebsite.com subdominio.

Agregar un subdominio a Cloudflare.

Cómo mantener su aplicación activa 24 horas al día, 7 días a la semana

Después de 30 minutos de inactividad, la aplicación Heroku queda inactiva. Puede encontrar el proceso de su aplicación usando heroic ps.

Las salidas de heroku ps se muestran inactivas. Imagen del autor.

Puede encontrar el «inactivo» en la última línea.

Este es el estado del proceso de mi otra aplicación que se muestra «activo».

Aparecen las salidas de heroku ps. Imagen del autor.

cron-job.org [8] y Kaffeine [9] proporcionar un servicio gratuito. Ambos visitan su URL a una hora programada.

cron-job.org

Puede crear un cronjob agregando su URL y programa de ejecución.

cron-job.org Pestaña Cronjobs. Imagen del autor.

Para su cronjob, debe seleccionar Cada 15 minutos. Si lo configura cada 30 minutos, puede demorar de 5 a 15 segundos.

Seleccionando Cada 30 minutos para un cronjob. Imagen del autor.

Puede editar o eliminar su cronjob a gusto.

Cómo arreglar un trabajo cron fallido

Su trabajo cron puede fallar al decir «Datos de respuesta demasiado grandes» o «Salida demasiado grande».

Imagen del autor

Cron-job.org acepta hasta 4 kB de datos de respuesta de su URL / script. Para solucionarlo, puede crear un punto final que devuelva una cadena JSON en lugar de una página HTML.

Cafeína

Kaffeine hace ping a su aplicación Heroku cada 30 minutos para que nunca se duerma.

Sitio web de Kaffeine.

Cómo eliminar su aplicación de Kaffeine

El enlace en el sitio web no funciona, pero si hace clic en el enlace de abajo, funcionó para mí.

http://kaffeine.herokuapp.com/#decaf

Elimina tu aplicación de Kaffeine.

Cómo cambiar el nombre de su aplicación

$ heroku apps:rename new_app_name

Cuando cambia el nombre de su aplicación, no olvide actualizar su trabajo cron.

Cómo ssh a Heroku

Es posible que desee enviar una ssh a Heroku. heroku ps:exec hace eso.

$ heroku ps:exec
Establishing credentials... done
Connecting to web.1 on ⬢ demo-desuyo...
~ $

Conclusión

Heroku proporciona un máximo de 1000 horas de alojamiento gratuito para su proyecto que utiliza menos de 512 MB de RAM. Puede utilizar su nombre de dominio. Si necesita SSL en dominios personalizados, debe actualizar al nivel Hobby.

cron-job.org y Kaffeine proporcionan un cronjob para visitar su URL y evitar dormir.

Boletin informativo

1*o7kH7RS4jesTPajc0YAyQw

Enlace de suscripción al boletín.

Obtén acceso completo a todas las historias en Medium al convertirse en miembro.

Referencias

  1. Verificación de la cuenta
  2. Horas gratuitas de Dyno
  3. Llaves SSH
  4. Heroku CLI
  5. Nombres de dominio personalizados para aplicaciones
  6. pipreqs
  7. Procfile
  8. cron-job.org
  9. Cafeína

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

CR5gjxyP5RDKBAky4iYmJj 1200 80

Las mejores correas de Apple Watch 2021: nuestra selección de las grandes correas portátiles de Apple

social og illustration acx 1200x628

¿Qué es la televisión conectada y OTT? Publicidad