1
我有一个使用依赖注入和芹菜瓶的应用程序。我有下面的例子,但我的主应用程序除了创建第二个Flask实例外,还需要实例化芹菜所需的所有模块。有没有更好的方法来实现这一目标?运行芹菜瓶和依赖注入
特别是:
主“前端”应用程序为什么要取决于整个芹菜“后端”堆只是配置芹菜客户端?自从前端开始执行任务以来,我想解耦这些子系统。
main.py
import tasks.py
app = Flask(__name__)
FlaskInjector(app=app, modules=[A, B, C, D, E, F])
celery.py
app = Flask(__name__)
injector = Injector(modules=[A, B])
FlaskInjector(app=app, injector=injector)
celery = Celery(app.import_name, include=['tasks'])
tasks.py
from celery import celery, injector
@celery.task
def my_task():
injector.get(A).foo()
你为什么不从主导入应用程序? – davidism
因为我不希望Celery依赖主应用程序中的所有东西(JINJA,模板等)。这与运行任务无关。相反,我不希望我的主应用程序依赖于配置工作人员所需的所有Celery客户端引导程序。这对玩具应用程序来说很好,但随着大型系统的增长,管理这些依赖关系很重要,我不理解Celery客户端配置(调用任务)的分离以及工作人员需要的东西。 – rsb
我有一个非常大的系统,只需在芹菜模块中导入应用程序,它工作得很好。这听起来好像你已经谈到了一个不存在的问题。如果您希望Celery应用程序使用您的Flask应用程序,则需要依赖Flask应用程序所依赖的内容。这没什么错。 – davidism