Flask 通过子域名启动多应用 APP(应用间想独立配置),切换时响应时间很慢

2020-02-29 15:07:24 +08:00
 sunhk25

一个 WB 系统下有多个应用,有些设置是共通的,有些需要按应用单独配置。

https://github.com/saltycrane/flask-subdomain-dispatcher-example

app.register_blueprint(dev_bp, subdomain='dev')

1909 次点击
所在节点    Python
4 条回复
encro
2020-02-29 17:30:07 +08:00
没看,你的方法是重新 init app 吧,register_blueprint 还是当前 app。
encro
2020-02-29 17:32:03 +08:00
如果的配置牵涉到底层比如数据库切换,就需要自己分装下 flash 的 db 扩张了。
如果不设计,为什么不实现自己的 config 类呢。

在这里问,不如自己看源码快。
sunhk25
2020-02-29 20:31:22 +08:00
@encro
- 方案一就是根据子域调度,请求后不存在的话初始化一个 app。只有一个子域时速度没问题。
```python
def _get_application(self, host):
print("HTTP_HOST", host, self.domain,host.endswith(self.domain))
host = host.split(':')[0]
assert host.endswith(self.domain), f'Configuration error.{host},{self.domain}'
subdomain = host[:-len(self.domain)].rstrip('.')
with self.lock:
app = self.instances.get(subdomain)
if app is None:
configobj = self._get_subdomain_based_config(subdomain)
app = self.create_app(
configobj=configobj, *self.args, **self.kwargs)
self.instances[subdomain] = app
return app
```
- 有自己的 config 类、应用配置 AppConfig 继承共通 BaseConfig。然后想向通过 curren_app 轻松读取配置
encro
2020-03-01 11:19:33 +08:00
很久以前 flask 弄过支持多域名的了,不过是所有域名公用一个 app,你这个是多个 APP,肯定速度上不如一个块,内存占用上就会大很多,比较浪费,除非每个实例代码不一样,否则不建议这样做。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/648606

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX