Closed diklios5768 closed 3 years ago
python 3.9.2,celery 5.0.5,redis 3.5 最近学到了celery,想把它加入工厂函数中,这样可以根据环境变量执行 app文件夹下的__init__.py是工厂函数,按照网上和作者之前给出的教程,工厂函数如下:
__init__.py
from flask import Flask from celery import Celery celery = Celery(__name__, broker='redis://localhost:6379/0',backend='redis://localhost:6379/0') def create_app(): app = Flask(__name__) register_celery(app) return app def register_celery(app): # 这里本来还有加载配置的,但是按道理来说不加载也能执行,因为初始化的时候定义好了 class ContextTask(celery.Task): def __call__(self, *args, **kwargs): with app.app_context(): return self.run(*args, **kwargs) celery.Task = ContextTask
其他需要使用celery的文件引入方法from app import celery,之后调用方法完全是按官方的写法,无论是__init__.py同一个目录还是次级目录,全部都会报错,即使是最简单的自定义add函数也无法执行。 不是有循环导入,就是没注册这个函数的错误,要么任务接受了根本不执行,目前所有成功的写法都是app和celery在一个文件中,希望作者能够更新更新一个实例,之前2019年的文章我看过了,基本已经失效,解决一个问题,还会出现新的问题。
from app import celery
之前还有人说过关掉debug模式的,试过了都没有用
python 3.9.2,celery 5.0.5,redis 3.5 最近学到了celery,想把它加入工厂函数中,这样可以根据环境变量执行 app文件夹下的
__init__.py
是工厂函数,按照网上和作者之前给出的教程,工厂函数如下:其他需要使用celery的文件引入方法
from app import celery
,之后调用方法完全是按官方的写法,无论是__init__.py
同一个目录还是次级目录,全部都会报错,即使是最简单的自定义add函数也无法执行。 不是有循环导入,就是没注册这个函数的错误,要么任务接受了根本不执行,目前所有成功的写法都是app和celery在一个文件中,希望作者能够更新更新一个实例,之前2019年的文章我看过了,基本已经失效,解决一个问题,还会出现新的问题。之前还有人说过关掉debug模式的,试过了都没有用