pythonflaskwaitress

waitress command line returning "Malformed Application" when deploying flask web app


I'm attempting to deploy a simple web app, and I'm using command line waitress-serve --call command. But every time, the command immediately returns 1. Malformed application 'name_of_project_here'.

Here's my flask web app in python:

from flask import Flask, render_template
app = Flask(__name__)

@app.route('/')
def index():
    return render_template('base.html')

if __name__ == '__main__':
   app.run(debug = True)

and the command I run is just

waitress-serve --call "name_of_project"

I did try looking through the documentation, and I found where the error occurs, but couldn't find an explanation of why it's occurring. What does malformed application mean?


Solution

  • Minimal working example:

    If you put code in file main.py

    from flask import Flask
    
    def create_app():
        app = Flask(__name__)
    
        @app.route('/')
        def index():
            return "Hello World!"
    
        return app
    
    if __name__ == '__main__':
        app = create_app()
        app.run()    
    

    then you can run it as

    waitress-serve --call "main:create_app"
    

    So "name_of_project" has to be "filename:function_name" which creates Flask() instance.

    It can't be any text. And if you forget : then you may see "Malformed application"