Ik ben een api aan het ontwikkelen die een endpoint heeft van waaruit +/- 20 losse database calls gegenereerd worden. De queries varieren in looptijd, van 100ms tot 2 seconden.
Mijn opzet:
- FastAPI api
- MS SQL database
Wanneer een request binnen komt op de API wordt er 1 functie aangeroepen, die functie roept vervolgens verschillende losse functies aangesproken die afzonderlijk van elkaar een database connectie maken en daar de beschikbare data ophalen.
Mijn eerste gedachte was dat dit het beste Asynchroon kan zodat de queries niet op elkaar wachten en heb hiervoor AIOODBC geprobeerd, door een connectie pool op te zetten en deze via een fastapi Dependency mee te geven aan de eerste functie, en binnen die functie connecties te maken en die mee te geven aan de losse queries.
Mijn responsetijd ging (lokaal) van 3 naar 4 secondes, dus dat was niet heel succesvol :-)
Ik ben nu aan het zoeken naar een betere manier om dit op te zetten maar ik raak het overzicht tussen de verschillende termen een beetje kwijt. Is asynchroon wel de beste manier, of kan dit beter via multi-threading, of is het beter om dit gewoon door de DB driver zelf op te laten lossen?
Mijn opzet:
- FastAPI api
- MS SQL database
Wanneer een request binnen komt op de API wordt er 1 functie aangeroepen, die functie roept vervolgens verschillende losse functies aangesproken die afzonderlijk van elkaar een database connectie maken en daar de beschikbare data ophalen.
Mijn eerste gedachte was dat dit het beste Asynchroon kan zodat de queries niet op elkaar wachten en heb hiervoor AIOODBC geprobeerd, door een connectie pool op te zetten en deze via een fastapi Dependency mee te geven aan de eerste functie, en binnen die functie connecties te maken en die mee te geven aan de losse queries.
Mijn responsetijd ging (lokaal) van 3 naar 4 secondes, dus dat was niet heel succesvol :-)
Ik ben nu aan het zoeken naar een betere manier om dit op te zetten maar ik raak het overzicht tussen de verschillende termen een beetje kwijt. Is asynchroon wel de beste manier, of kan dit beter via multi-threading, of is het beter om dit gewoon door de DB driver zelf op te laten lossen?