我有一个设置,其中大约有50个站点使用相同的代码,但配置略有不同。并非一遍又一遍地部署相同的代码,而是在不同的文件夹和存储库中重复这些代码,Flask中有什么方法可以像某种类库一样集中网站的工作代码?
在Django中,它们有点像这样:
https://docs.djangoproject.com/en/dev/ref/contrib/sites/
一些想法
部署50个UWSGI实例,复制相同的代码和不同的配置
部署50个UWSGI实例,并添加python代码作为一种模块或扩展,因此仅一个代码实例:http : //flask.pocoo.org/docs/extensiondev/
部署1个UWSGI实例,该实例只有一个代码实例并处理不同的主机名:http : //flask.pocoo.org/docs/patterns/appdispatch/
我正在复制的代码旨在查询API并显示结果。站点之间的差异有两个:
模板-尽管这些站点看起来很相似,但它们并不完全相同。它们的CSS和图像会略有不同。
API查询。大多数较小的站点都用于城镇。这意味着来自这些站点的API请求将稍作修改,以便仅在该区域返回结果。
我的重点是为用户提供性能。我最初将在具有2GB RAM的服务器上运行它们,这应该足够了。
通常,对于这些类型的场景,在应用程序中内置了“基于主机的行为不同”的逻辑。
因此,更好的解决方案是#3,但我的建议是不要使用app dispatch。
构建逻辑以hostname
直接在主应用程序中获取配置(例如,您可以在@before_request
处理程序中加载专用配置并使用单个数据库实例)。如您所说,如果您计划仅使用一台小型服务器,则此解决方案的资源有限。
50个不同的带有各自进程的uWSGI实例将占用您的内存,并开始轻松地进行交换。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句