paint-brush
Cómo diseñar aceleradores individuales para usuarios y tablas en FastAPIpor@kaizenthecreator
2,190 lecturas
2,190 lecturas

Cómo diseñar aceleradores individuales para usuarios y tablas en FastAPI

por Philip Ireoluwa Okiokio4m2023/02/07
Read on Terminal Reader

Demasiado Largo; Para Leer

FastAPI: diseño de aceleradores individuales para usuarios y tablas. Aquí está la premisa de mi generalización. Si ha leído alguno de mis trabajos anteriores, sabrá que el origen de mi backend es Django (y su marco de trabajo restante). Estoy agradecido por su dirección y sus patrones de diseño, me han permitido modificar la rueda para adaptarla a mi caso de uso.
featured image - Cómo diseñar aceleradores individuales para usuarios y tablas en FastAPI
Philip Ireoluwa Okiokio HackerNoon profile picture
0-item


La ingeniería de software es más fácil de lo que pensamos porque a veces las respuestas son simples y muchas veces están ante nuestros ojos.


FastAPI ha sido fundamental para mí en la comprensión de la ingeniería de back-end y el pensamiento sobre los procesos y cómo las cosas pueden y deben funcionar. Es una herramienta inteligente, sin embargo, depende únicamente de su creatividad y los ojos de su imaginación. Aquí está la premisa de mi generalización.


Si ha leído alguno de mis trabajos anteriores, sabrá que el origen de mi backend es Django (y su marco de trabajo restante), y estoy agradecido por su dirección y sus patrones de diseño, me han permitido modificar la rueda para adaptarla a mi caso de uso.


Al crecer, mis padres sabían que mi mente se preguntaba y quería crear cosas y mis padres siempre me decían que no puedes reinventar la rueda, modifícala.


Una vez trabajé en una aplicación o punto final acelerado/de tasa limitada con DRF y fue increíble, aprendí algo nuevo y estaba intrigado (al principio de mi carrera). El acelerador en este caso afectó los puntos finales en los que lo apliqué, recientemente me interesó hacer algo similar en FastAPI, y primero tomé la ruta fácil (google para la victoria) y vi que existen paquetes que realizan la acción del acelerador .


Personalmente, sentí que brindaban la misma comodidad y familiaridad que tenía cuando usaba Django. No ofrecían la flexibilidad que quería (o tal vez me dio pereza hacer algunas anulaciones), así que me senté y diseñé una solución. Así que echemos un vistazo al código.


Descargo de responsabilidad: no proporcionaré información sobre cómo comenzar con FastAPI y hacer mucho para ponerme al día. Asumiré que puede hacerlo, si no puede consultar los mejores recursos para comenzar con FastAPI (Tutorial de , Tutorial de Doc )

Aplicación de demostración: Tranzact some Fintechy (esencial) aplicación.

Muchas partes móviles están sujetas a un punto de entrada al servidor.


Entonces, creemos una tabla llamada Tranzact que se puede usar para crear registros de datos de Tranzact y se generará una clave API para poder identificar distintos registros de Tranzact.


Esta tabla y aplicación aprovechan SQLAlchemy, así que consulte la documentación.


tabla tranzact, esto idealmente vive en el archivo models.py.


Aquí está el enrutador.

Enrutador API donde viven las rutas para tranzact. Idealmente vive en su archivo router.py.


Podemos realizar operaciones CRUDy en el enrutador (si la aplicación se ve rara, haré otra publicación sobre el patrón de diseño aquí llamado Patrón de diseño de repositorio).


Este es el punto final al que habla una clave de API, esta clave de API sirve como autenticación para realizar algunas acciones. Lo que podemos ver es que hay una dependencia que apunta a un registro de transacciones.


una ruta que requiere una clave API para la comunicación.


Examinemos la dependencia de tranzact_header y verifiquemos las llamadas.

una función que verifica la API-Key enviada como un encabezado de solicitud y devuelve un solo registro de tranzact.


Esto reconoce la API_Key y devuelve el registro tranzact asociado con una api_key.

Entonces, para resolver el desafío de la limitación individualizada, lo resolví mientras creaba un registro para la tabla tranzact. Creo un registro con el tranzact.id y un recuento con un valor predeterminado de 0 para la tabla de límite de tasa de tranzact. Aquí está la tabla a continuación.



un fragmento de la tabla Rate Limit y los modelos tranzact.


Entonces, con esta solución, necesitaba una forma de rastrear el registro de límite de tasa, con API_KEY podemos aumentar el conteo incremental en función de cada llamada y aceleración en función del rol freemium que tiene el registro tranzact. Así es como se ve la función.



Entonces, con esta función, podemos hacer un control de calidad y verificar en función de una bandera y con el conteo. Esto depende de la función api_header. Luego intercambiamos la dependencia en los puntos finales de llamadas de API con la función de límite de velocidad de API de aceleración. Podemos hacerlo porque ambos devuelven el mismo registro de Tranzact. Para entender más sobre las dependencias y su llamada con FastAPI revisa este punto de la documentación .


Aquí hay un caso de prueba en mi cartero.


Configurando API_KEY para mi colección en cartero.

Configuración de la clave API de idea en cartero a nivel de colección.


A continuación, se muestra la respuesta acelerada para una llamada de solicitud que alcanzó el número limitado, lo que significa que otra api_key responderá de manera diferente y renunciará a la respuesta deseada, además, si el registro tranzact es premium, omite la verificación de aceleración.


Respuesta de API acelerada para llamadas de API.


Entonces, así es como creé un acelerador de registro de base de datos singular, la etapa final de mi implementación incluye el uso de un trabajo de ritmo de apio (un trabajo/tarea programado) para revertir todo el recuento de registros de límite de tasa de tranzact a cero en la hora. Esta es una implementación personal que otros pueden hacer.


En conclusión, tome mis palabras a continuación con un corazón ligero pero es mi verdad.


Cualquier producto/característica que pueda ver, imaginar o conceptualizar, independientemente de su complejidad, podemos construirlo, una vez que podamos verlo, FastAPI puede ayudarnos a darle vida.


También publicado aquí.