Skip to content

flask_manager

drunc.utils.flask_manager

Classes

FlaskManager(name, app, port, workers=1, host='0.0.0.0')

Bases: Thread

This class is a manager for flask. It allows to have a Flask server under a thread, start and stop it. Note that it creates another -trivial- endpoint accessible at the route /readystatus. This is used to poll if the service is up, however the user can provide it, and

To use this code, one can use the following example:

from flask import Flask from flask_restful import Api app = Flask('some-name') api = Api(app) api.add_resource( AnEndpointResourceClass, "/endpoint", )

from flask_manager import FlaskManager manager = FlaskManager( port = port, app = app, name = "some-name" )

manager.start() while not manager.is_ready(): from time import sleep sleep(0.1)

Then, later on, to stop it: manager.stop()

Source code in drunc/utils/flask_manager.py
def __init__(self, name, app, port, workers=1, host="0.0.0.0"):
    super(FlaskManager, self).__init__(daemon=True)
    self.log = get_logger(f"{name}-flaskmanager", stream_handlers=True)
    self.name = name
    self.app = app
    self.prod_app = None
    self.flask = None

    self.host = host
    self.port = port

    self.workers = workers
    self.gunicorn_pid = None
    self.ready = False
    self.joined = False
    self.ready_lock = threading.Lock()

Functions