Source code for gwcelery.tools.flask

"""Flask web application for manually triggering certain tasks."""

import argparse
import os

from celery.bin.base import Command, daemon_options
from celery.platforms import detached, maybe_drop_privileges
import click
import click.testing
from flask.cli import FlaskGroup

from ..flask import app
from .. import views as _  # noqa: F401


[docs]@click.group(cls=FlaskGroup, create_app=lambda *args, **kwargs: app) def main(): pass
[docs]class FlaskCommand(Command):
[docs] def add_arguments(self, parser): daemon_options(parser) parser.add_argument('-l', '--loglevel', default='WARN') # Capture command line help from Flask runner = click.testing.CliRunner() result = runner.invoke(main, ['--help']) flask_help = result.output.replace('main', 'gwcelery flask') group = parser.add_argument_group( 'Flask Options', description=flask_help) group.add_argument( 'flask_args', nargs=argparse.REMAINDER, help=argparse.SUPPRESS)
[docs] def run(self, *args, flask_args=(), detach=False, logfile=None, loglevel=None, pidfile=None, uid=None, gid=None, umask=None, workdir=None, no_color=None, **kwargs): # Allow port number to be specified from an environment variable. port = os.environ.get('FLASK_PORT') colorize = not no_color if no_color is not None else no_color if port: flask_args += ['--port', port] if not detach: maybe_drop_privileges(uid=uid, gid=gid) if detach: with detached(logfile, pidfile, uid, gid, umask, workdir): self.app.log.setup(loglevel, logfile, colorize=colorize) main(flask_args) else: self.app.log.setup(loglevel, logfile, colorize=colorize) main(flask_args)
main.__doc__ = FlaskCommand.__doc__ = __doc__