Как запустить приложение в Falcon с Gunicorn - PullRequest
0 голосов
/ 28 марта 2019

У меня простое приложение,

# 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

[Не удалось найти объект приложения 'application' в 'app']

не работает

Я не знаю, как запустить это приложение

Я должен бежать

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

Но «приложение» внутри метода

У кого-то есть идея?

1 Ответ

1 голос
/ 28 апреля 2019

Что вы можете сделать, так это вернуть 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
...