【问题标题】:How to start application in Falcon with Gunicorn如何使用 Gunicorn 在 Falcon 中启动应用程序
【发布时间】:2019-03-28 14:55:22
【问题描述】:

我有一个简单的应用程序,

# 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'在方法里面

有人有想法吗?

【问题讨论】:

    标签: python gunicorn falconframework


    【解决方案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
    

    【讨论】:

    • 或者简单地说“application = create_some()”
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-03-08
    • 2020-03-29
    • 2020-10-27
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多