• Stars
    star
    213
  • Rank 185,410 (Top 4 %)
  • Language
    Python
  • License
    MIT License
  • Created almost 4 years ago
  • Updated about 2 years ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

Completely Scalable FastAPI based template for Machine Learning, Deep Learning and any other software project which wants to use Fast API as an API framework.

Fast-API ๐Ÿš€

Why This ? ๐Ÿคจ

Need Clean and Scalable Code Architecture for ML/DL and NLP driven micro-service based Projects ?

Introduction: Structuring of API

  • api_template: Contains all the API related Code Base.

    • manage.py: Only entry point for API. Contains no logic.
    • .env: Most important file for your api and contains global configs. Acoid using application/variable level configs here.
    • application: It contains all your api related codes and test modules. I prefer keeping application folder at global.
    • logs: Logs is self-explanatory. FYI it will not contain any configuration information, just raw logs. Feel free to move according to your comfort but not inside the application folder.
    • models: As a part of Machine-Learning/ Deep-Learning app you might need to add model files here or if you have huge files on cloud add symlinks if possibles.
    • resources: To store any documentation, application related csv/txt/img files etc.
    • settings: Logger/DataBase/Model global settings files in yaml/json format.
  • application:

    • main: priority folder of all your application related code.
      • ๐Ÿ— infrastructure: Data Base and ML/DL models related backbone code
      • ๐Ÿ“ฎ routers: API routers and they strictly do not contain any business logic
      • ๐Ÿ“ก services: All processing and business logic for routers here at service layer
      • โš’ utility:
        • config_loader Load all application related config files from settings directory
        • logger Logging module for application
        • manager A manager utility for Data Related Task which can be common for different services
      • ๐Ÿ config.py: Main config of application, inherits all details from .env file
    • test: Write test cases for your application here.
    • initializer.py: Preload/Initialisation of Models and Module common across application. Preloading model improves inferencing.

Running Locally ? ๐Ÿ“

Screenshot 2021-05-16 at 6 56 38 PM Run Command uvicorn manage:app --host 0.0.0.0 --port 8000

Docker Support ๐Ÿณ

docker build -t fastapi-image  .
docker run -d --name fastapi-container -p 8000:8000 fastapi-image

Sample Demo App ~ Powered by Streamlit โšก๏ธ

Screenshot 2021-05-16 at 6 56 19 PM Always good to have an interface to show a quick demo ๐Ÿ˜. Note: manage.py runs the streamlit app as a subprocess. feel free to move it as per your need.

What is new ?

  • Form Support for Image Classification imgClassification
  • Cutelogs GUI Integration for Easy LogsView Logs

Drop me email for any queries on [email protected]