- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
tldr; 寻找一种方法,为在 Gunicorn 后面运行的应用程序中的所有路由添加前缀,而无需在 @route(PREFIX + '/') 中使用反向代理/蓝图/重复前缀
等
使用 Flask 创建一些 Python 服务,在 Docker 容器中运行。
目前,还没有使用 Nginx/Apache 进行反向代理。
像下面这样的东西在单独运行 Flask 时可以工作
- (例如 % python app.py
响应 localhost:5000/a/b/some-route
)
base_path = "/a/b"
app = DispatcherMiddleware(_root_app, {base_path: self})
run_simple(host, port, app, **options)
不知道如何在 Gunicorn 后面运行时达到相同的结果。
(真的很想在不为主应用程序制作蓝图的情况下执行此操作。同时尝试避免在每个 @route(PREFIX + '')
中使用相同的前缀)
这样做的原因
使用添加一些路线的扩展以及蓝图。希望应用程序路由和扩展/蓝图路由都带有前缀。
<小时/>This question asked this specifically for Flask, which I'm able to get working using the
DispatcherMiddleware
approach.
My question is how to get this working when running behind Gunicorn (no Nginx or Apache in front, just Gunicorn)
当前使用 Flask 的子类(需要做一些自定义的日志记录。)
覆盖 add_url_rule
有效。
prefixed_rule = self._prefix_rule(rule)
super().add_url_rule(prefixed_rule,
endpoint=endpoint,
view_func=view_func,
**options)
这也适用于我们的扩展
最佳答案
如果您正在进行应用程序组合,那么您可以使用DispatcherMiddleware
trick你引用了。但是,听起来您正在尝试安装一个子路径服务,但根本不提供“更高”路径之外的任何服务。
有几种不同的方法可以做到这一点。
替换Flask.url_map._rules
与 werkzeug.routing.Submount
规则工厂:
from werkzeug.routing import SubPath
app = Flask(__name__)
# register blueprints and extensions
# load config, etc.
app.url_map._rules = SubPath(app.config['APPLICATION_ROOT'], app.url_map._rules)
from werkzeug.routing import Rule
app.url_rule_class = lambda path, **options: Rule(PREFIX + path, **options)
按照您在问题中的建议替换 add_url_rule
。
关于python - 将路由前缀添加到在 Gunicorn 上运行的 Flask 应用程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32748326/
发布以下查询时,出现错误响应 {"error":{"root_cause":[{"type":"parsing_exception","reason":"[prefix] query does not
我对 Python 和 Django 真的很陌生......我想做的是: 在 Mac OS 10.6.8 上安装 Python 2.7 安装 pip 安装 Django 安装 virtualenvwr
前缀表达式 前缀表达式又称波兰式,前缀表达式的运算符位于操作数之前。 例如: ( 3 + 4 ) × 5 − 6 (3+4)×5-6(3+4)×5−6 对应的前缀表达式就是 - × + 3 4 5 6
如何在Intel C编译器中定义俄语字符串? 在MSVS 2008中,我这样做: _wsetlocale(LC_ALL, L"Russian"); wprintf(L"текст"); 而且有效。 在
这是我到目前为止所得到的: SPECS = $(shell find spec -iname "*_spec.js") spec: @NODE_ENV=test \ @NODE_PAT
我看到了下面的前缀::它代表什么? :abc 是一个关键字,但是 ::abc 是什么? 谢谢,穆尔塔扎 最佳答案 假设当前命名空间是my.app。然后, ::x 是 :my.app/x 的阅读器简写,
我为我的 discord 创建了一个建议功能,用户可以说 +suggest(建议),它会自动发布到另一个 channel 。 有些事情我需要帮助: 将“建议由用户制作”放入标题中,而不是在单独的行中。
#include int main() { int a=1; printf("%d",(++a)++); return 0; } 此代码出现错误 error: invalid lvalue in
我在使用前缀和后缀运算符对数字执行减法时遇到了一个小问题。这是我的程序: public class postfixprefix { public static void main (Strin
当我在 Android native 浏览器中运行 HTML5 兼容性测试时,它会看到 IndexedDB 支持标记为“Prefixed”,而在 Chrome 和其他浏览器中则标记为“Yes”。我知道
我试过重载运算符--前缀,但我有错误,有人帮忙吗? #include #include "Circulo.h" using namespace std; int main() { //par
我正在尝试在我正在制作的这个论坛上创建一个引用功能,当我按下引用时,我只需用 Markdown 填充 textarea ,但唯一的事情是我需要在每行的 markdown 前面加上 > 前缀,这样它就是
friend 之间打赌。sum 变量定义为全局变量。我们有 2 个线程在循环 1..100 上运行并在每个循环中将 sum 递增 1。 打印什么?“和=”? int sum = 0; void fun
这个问题在这里已经有了答案: 关闭 10 年前。 Possible Duplicate: Post Increment and Pre Increment concept? 谁能明确解释前缀增量与后
从模板类继承时,我需要在派生类中访问的所有基类成员前面加上this: template struct X{ int foo; void bar(); }; template struct
据我所知,在 C++ 中,在同一类的函数成员中调用另一个成员函数不需要“this”前缀,因为它是隐式的。但是,在使用函数指针的特定情况下,编译器需要它。仅当我通过 func 指针为调用包含“this”
例如,考虑以下名称冲突的地方 nest1 : template class nest1 {}; class cls { public: template class nest1 {};
我无法理解下面一段特定代码的逻辑。 int i[] = { 21, 4, -17, 45 }; int* i_ptr = i; std::cout << (*i_ptr)++ << std::endl
有人能给我指出正确的方向吗,我目前有一个可搜索的数据库,但遇到了按标题搜索的问题。 如果标题以“The”开头,那么显然标题将位于“T”部分,避免搜索“The”的好方法是什么?我应该连接两个字段来显示标
我在 2 小时前创建了一个新项目。以与我的旧(不同)项目相同的方式配置它,一切正常。 在我的 podfile 中我有: pod 'CocoaLumberjack', '2.0.0-rc2' 如果我在
我是一名优秀的程序员,十分优秀!