- Pycham के साथ stack trace को फॉलो करके देखना एक बार ज़रूर आज़माने लायक है.
- आप देख सकते हैं कि इस्तेमाल होने वाले variables की क्या values हैं, और अगर वह instance है तो उसके पास कौन-से attrs हैं.
- ऐसा लगता है कि FastAPI, Starlette के बिना मौजूद नहीं हो सकता.
- इसका base class भी Starlette को inherit करके बनाया गया है, और Request, Response, Router, Middleware आदि सब Starlette पर आधारित हैं.
- FastAPI code की तुलना में starlette code ज़्यादा देखने को मिलता है.
- यह भी लगता है कि FastAPI को हटाकर केवल Starlette से भी app बनाया जा सकता है.
- Uvicorn ↔ Starlette ↔ FastAPI की भूमिकाएँ और अधिक स्पष्ट महसूस होती हैं.
- Uvicorn: बाहरी communication interface
- Starlette: server के अंदरूनी operation interface
- FastAPI: Starlette के ऊपर endpoint func लिखने की सुविधा (Depends(), Pydantic के जरिए params validation आदि) जोड़कर Uvicorn के साथ interact करता है
- middleware के बारे में समझ थोड़ी और बढ़ी.
- यह समझ आता है कि Request processing, ServerErrorMiddleware → custom middlewares → ExceptionMiddleware के क्रम में होती है.
@app.exception_handler(Exception) से लगाए गए handler को ExceptionMiddleware में process किया जाता है, और बाकी server errors को ServerErrorMiddleware संभालता है.
- middlewares की blocking रोकने के लिए एक अलग thread group फिर से चलाया जाता है.
अभी कोई टिप्पणी नहीं है.