如何使用Gunicorn在Falcon中启动应用程序

时间:2019-03-28 14:55:23

标签: python gunicorn falconframework

我的申请很简单

# app.py
import falcon

class ThingsResource:
def on_get(self, req, resq) :
    # something

class SomeResource:
    def on_get(self, req, resq) :
        # something

def create_things(self):    
    app = falcon.API(middleware=[(Middleware1())])
    things = ThingsResource()
    app.add_route('/things', things)

def create_some(self):
    app = falcon.API(middleware=[(Middleware2(exempt_routes=['/health']))])
    some = SomeResource()
    app.add_route('/some', some)

问题在于,因为我使用的路由的中间件不同,所以一条路由是Middleware1,另一条是Middleware2

我需要运行app.py应用程序,但这是

gunicorn -b 0.0.0.0:8000 app --reload

[无法在'app'中找到应用程序对象'application']

不起作用

我不知道如何运行此应用程序

我应该跑步

gunicorn -b 0.0.0.0:8000 app:app --reload

但是“ app”位于方法内部

有人有主意吗?

1 个答案:

答案 0 :(得分:1)

您可以做的是,从这些函数返回app实例,并将其分配给文件中的变量(在任何函数之外),如下所示:

def create_things():    
    app = falcon.API(middleware=[(Middleware1())])
    things = ThingsResource()
    app.add_route('/things', things)

    return app

def create_some():
    app = falcon.API(middleware=[(Middleware2(exempt_routes=['/health']))])
    some = SomeResource()
    app.add_route('/some', some)

    return app


app = create_some()

并使用

运行它
gunicorn -b 0.0.0.0:8000 <file_name>:app --reload