python - 如何使用 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
但是“应用程序”在方法内部
有人有想法吗?
解决方案
您可以做的是,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
推荐阅读
- dependencies - 如何让 nltk 斯坦福解析器返回折叠的依赖项(不是通用依赖项)?
- django - Django 数据库级别的一对一关系和外键关系之间的区别?
- javascript - 将文件保存在 angular.js 的特定文件夹中
- android - 为什么编译和运行时依赖很重要?
- angular - 如何检测 mat-form-field 的外部点击?
- sql - 是否有相当于返回的 SQL?
- python - 在 python 中为 Visual Basic 编写“长线测试”(Coala 的“LineLengthBear”)
- sql - 如何将 ssrs 报告中的日期参数作为 sql 查询传递给 query.commandtext
- elasticsearch - Vega:在数据中添加缺失的信息
- java - 无法将多个正则表达式模式添加到数组列表中