2017-09-03 31 views
0

我用烧瓶蓝图,就像这里写的: http://flask.pocoo.org/docs/0.12/patterns/appdispatch/不要重新加载所有应用程式瓶

具体来说,我正在下面这段代码:

from werkzeug.wsgi import DispatcherMiddleware 
from frontend_app import application as frontend 
from backend_app import application as backend 

application = DispatcherMiddleware(frontend, { 
    '/backend':  backend 
}) 

瓶有一个真棒功能重新加载应用程序,因为它检测到代码中的更改。但是,在我的情况下,这对两个应用程序都是不可取的:后端应用程序太重,无法每隔几分钟重新加载一次。当我重新加载fronend时,后端也会重新加载,并且需要很长时间。有什么方法可以只重新加载已更改的应用程序吗?

我意识到这可能是困难的,因为据我了解在这一点上

application = DispatcherMiddleware(frontend, { 
    '/backend':  backend 
}) 

应用合并到一个单一的一个,他们都不会再分开。

无论如何,也许有不同的方式来实现我想要的?

谢谢。

+0

您正在使用Debug = True的烧瓶或其他东西来自动重新加载? –

+0

是的,我确实使用auto_reload = True –

回答

0

我不确定是否有什么直接做这样的事情。只有当我阻止你的模块重新初始化时,我才能想到。

查看中的一个可如何实现这一点

reloadme.py

一个下面示例
import sys 

if 'reloadme' in sys.modules and hasattr(sys.modules['reloadme'], '__MODULE_LOADED'): 
    print ("module is being reloaded") 
    mod = sys.modules['reloadme'] 
    x = mod.x 
else: 
    print ("Loading module for first time") 
    __MODULE_LOADED = True 
    x = 2 

def printx(): 
    print (x) 

reloadtest.py

from importlib import reload 

import reloadme 

reloadme.printx() 

reloadme.x = 10 

reloadme.printx() 

print("Reloading reloadme to check if x is changed back to 2") 
reload(reloadme) 

reloadme.printx() 

运行reloadtest.py的输出将是如低于

Loading module for first time 
2 
10 
Reloading reloadme to check if x is changed back to 2 
Reloading module 
10