首页 > 解决方案 > 如何使用 Gunicorn 在 Falcon 中启动应用程序

问题描述

我有简单的应用程序,

# 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

但是“应用程序”在方法内部

有人有想法吗?

标签: pythongunicornfalconframework

解决方案


您可以做的是,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

推荐阅读