Flask的初始化有好多种,像工厂、单例都是不错的,我使用的是声明+init的方式,比如celery会是这样:
base.py中:celery = Celery()
__init__.py中在create__app()方法中会将base中的组件逐个init初始化。
大部分flask的组件都支持这种初始化的方式,因为python是解释型语言所以在使用不支持这种的组件如celery会有问题,比如像上面那样初始化后celery无法正确设置broker哪怕重新用celery.update_config(xxx)也没有用,其他参数似乎可以生效的。后来找到了celery-flask-helper,发现可以解决这个问题,不过在我的py35中无法使用它pypi的包,最后是copy代码直接引用到我的app中才可以。