为了账号安全,请及时绑定邮箱和手机立即绑定

如何在Flask中创建Celery实例?

如何在Flask中创建Celery实例?

qq_笑_17 2018-10-04 16:27:01
我在flask程序中使用了工厂函数和蓝本,把Flask实例的创建放在了manage.py中(看过Flask Web开发这本书的同学应该懂我)。现在我想要创建一个Celery的实例(在app程序包中),Celery的实例创建时需要Flask实例的程序上下文来读取配置并在Task的调用函数里增加程序上下文,代码如下(摘自Flask官方文档):def make_celery(app):    celery_app = Celery(__name__)    celery_app.config_from_object(app.config)    TaskBase = celery_app.Task    class ContextTask(TaskBase):        abstract = True        def __call__(self, *args, **kwargs):            with app.app_context():                return TaskBase.__call__(self, *args, **kwargs)    celery_app.Task = ContextTask    return celery_app现在的问题是:Flask实例在manage.py中创建,不在app程序包中,没法在app包中导入Flask实例(强行导入就没有了大型程序结构的意义了);定义Celery Task的时候,也需要Celery的实例对象,所以也不能在manage.py中创建Celery实例;现在这两个实例相互制约,好头疼,请问各位大神都是怎么做的?网上看到一个方法,在app程序包创建celery实例的时候,直接调用Flask实例创建函数来创建了一个flask实例,但是这样的话,Flask运行时的程序实例还是创建Celery时的程序实例吗?程序上下文会不会不一致?先谢为敬!
查看完整描述

2 回答

  • 2 回答
  • 0 关注
  • 1075 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信