def __init__(self, flask_app, logger): self.app = flask_app self.log = logger self.api = Api(self.app) self.appinsights = AppInsights(self.app) self.is_terminating = False self.func_properties = {} self.func_request_counts = {} self.api_prefix = getenv('API_PREFIX') self.api_task_manager = TaskManager() signal.signal(signal.SIGINT, self.initialize_term) # Add health check endpoint self.app.add_url_rule(self.api_prefix + '/', view_func=self.health_check, methods=['GET']) print("Adding url rule: " + self.api_prefix + '/') # Add task endpoint self.api.add_resource( Task, self.api_prefix + '/task/<int:id>', resource_class_kwargs={'task_manager': self.api_task_manager}) print("Adding url rule: " + self.api_prefix + '/task/<int:taskId>') self.app.before_request(self.before_request)
from flask_restful import Api from task_management.api_task import ApiTaskManager import api_config import orchestrator from sas_blob_utils import SasBlob print('Creating application') api_prefix = os.getenv('API_PREFIX') print('API prefix: ', api_prefix) app = Flask(__name__) api = Api(app) # Log requests, traces and exceptions to the Application Insights service appinsights = AppInsights(app) # Use the AI4EAppInsights library to send log messages. log = AI4EAppInsights() # Use the internal-container AI for Earth Task Manager (not for production use!). api_task_manager = ApiTaskManager(flask_api=api, resource_prefix=api_prefix) # Use the AI4EWrapper to executes your functions within a logging trace. # Also, helps support long-running/async functions. ai4e_wrapper = AI4EWrapper(app) # Instantiate blob storage service to the internal container to put intermediate results and files storage_account_name = os.getenv('STORAGE_ACCOUNT_NAME') storage_account_key = os.getenv('STORAGE_ACCOUNT_KEY') internal_storage_service = BlockBlobService(account_name=storage_account_name, account_key=storage_account_key)