Flask Application with cndi Package

This document provides a step-by-step walkthrough of a Python script that sets up a Flask application using the cndi>=2.4.0. The cndi package is used for dependency injection and environment configuration, making it easier to manage complex Flask applications.

The script is divided into four main steps:

  1. Importing necessary modules and functions
  2. Defining the endpoint function
  3. Setting environment variables
  4. Initializing and running the application

Each step is explained in detail in the following sections.

Step 1: Import Necessary Modules and Functions

This step imports necessary modules and functions. jsonify and request are imported from Flask. Autowired, addToOsEnviron, FlaskApplication, and AppInitializer are imported from the cndi package.

from flask import jsonify, request
from cndi.annotations import Autowired
from cndi.env import addToOsEnviron
from cndi.flask.flask_app import FlaskApplication
from cndi.initializers import AppInitializer

Step 2: Define the Endpoint Function

@Autowired()
def addEndpoints(flaskApp: FlaskApplication):
    @flaskApp.app.route("/", methods=["POST"])
    def serve():
        return jsonify(request.json)

This step defines the addEndpoints function to add an endpoint to a Flask application. The @Autowired() decorator is used to automatically inject a FlaskApplication instance into the function. The @flaskApp.app.route("/", methods=["POST"]) decorator is defining a route that listens for POST requests at the root URL ("/"). The serve function returns the JSON content of the request.

Step 3: Set Environment Variables

if __name__ == '__main__':
    addToOsEnviron("app.flask.enabled", "true")                     # Enable Flask App
    addToOsEnviron("rcn.management.server.enabled", "true")         # Enable Management and Health Endpoint
    addToOsEnviron("management.context.thread.enable", "true")      # Enable Context Thread

This step sets several environment variables using the addToOsEnviron function. These environment variables are used to enable the Flask app, the management and health endpoint, and the context thread.

Step 4: Initialize and Run the Application

    app = AppInitializer()
    app.componentScan("cndi.flask")
    app.run()

This step initializes the application using the AppInitializer class. It scans the "cndi.flask" package for components to register with the application using the componentScan method. Finally, it starts the application using the run method.

Future Updates

This document covers the basic setup of a Flask application using the cndi package. However, Flask development with cndi is a broad topic with many more advanced features and techniques to explore.

In the upcoming updates to this documentation, we plan to delve deeper into these advanced topics, providing more comprehensive guides and examples to help you fully leverage the power of cndi in your Flask development process.

Stay tuned for more in-depth content on Flask development with cndi.