Jak korzystać ze skryptu Flask-Script i Gunicorn

Pracuję nad aplikacją Flask za pomocą wbudowanego w Dev serwera Flask. Zaczynam go za pomocą skryptu kolby. Chcę przełączyć się na używanie Gunicorn jako serwera WWW. Aby to zrobić, czy muszę napisać jakiś kod integracji między skryptem Flask a skryptem Gunicorn? Czy też skrypt Flask-Script nie ma znaczenia dla uruchamiania aplikacji za pomocą Gunicorn?

Z góry dziękuję!

Rekwizyty do @ sean-lynch. Poniżej przedstawiono działający, przetestowany kod oparty na jego odpowiedzi. Wprowadziłem zmiany:

Opcje, które nie są rozpoznawane przez Gunicorn, są usuwane zsys.argv wremove_non_gunicorn_command_line_args() przed próbą uruchomienia serwera. W przeciwnym razie Gunicorn zgłasza błąd z taką wiadomością:error: unrecognized arguments: --port 5010. Usuwam-p ponieważ nawet jeśli nie powoduje błędu, to tylko dlatego, że Gunicorn uważa, że ​​jest to jego krótka formapidfile opcja, która oczywiście nie jest zamierzona.

Sygnatura GunicornServer.handle () zmodyfikowana tak, aby pasowała do metody, którą zastępuje, tj. Command.handle ()

-

from flask_script import Command
from gunicorn.app.base import Application

class GunicornServer(Command):

    description = 'Run the app within Gunicorn'

    def __init__(self, host='127.0.0.1', port=8000, workers=6):

        self.port = port
        self.host = host
        self.workers = workers

    def get_options(self):
        return (
            Option('-t', '--host',
                   dest='host',
                   default=self.host),

            Option('-p', '--port',
                   dest='port',
                   type=int,
                   default=self.port),

            Option('-w', '--workers',
                   dest='workers',
                   type=int,
                   default=self.workers),
        )

    def handle(self, app, *args, **kwargs):

        host = kwargs['host']
        port = kwargs['port']
        workers = kwargs['workers']

        def remove_non_gunicorn_command_line_args():
            import sys
            args_to_remove = ['--port','-p']
            def args_filter(name_or_value):
                keep = not args_to_remove.count(name_or_value)
                if keep:
                    previous = sys.argv[sys.argv.index(name_or_value) - 1]
                    keep = not args_to_remove.count(previous)
                return keep
            sys.argv = filter(args_filter, sys.argv)

        remove_non_gunicorn_command_line_args()

        from gunicorn import version_info
        if version_info < (0, 9, 0):
            from gunicorn.arbiter import Arbiter
            from gunicorn.config import Config
            arbiter = Arbiter(Config({'bind': "%s:%d" % (host, int(port)),'workers': workers}), app)
            arbiter.run()
        else:
            class FlaskApplication(Application):
                def init(self, parser, opts, args):
                    return {
                        'bind': '{0}:{1}'.format(host, port),
                        'workers': workers
                    }

                def load(self):
                    return app

            FlaskApplication().run()

manager.add_command('gunicorn', GunicornServer())

questionAnswers(6)

yourAnswerToTheQuestion