Flask+Celery+Blueprint
其他博主已经有成套的博客,这里就不赘述,仅记录遇到的问题。
遇到1个问题:任务写入了broker,但是celery执行任务时报错拒绝访问句柄6错误
解决方法:
pip install gevent
celery -A my_shop.task.tasks worker -l info -P gevent
Flask+VUE3课程B站上有成套的。
核心代码结构如下:

__init__py 代码如下:
1 from flask import Flask 2 from flask_sqlalchemy import SQLAlchemy 3 from config import config_map 4 from flask_migrate import Migrate 5 6 db = SQLAlchemy() 7 8 def create_app(config_name): 9 app = Flask(__name__) 10 print('config_name:' + config_name) 11 obj = config_map.get(config_name if config_name else 'develop') 12 # 将配置应用到app 有三种方式 13 app.config.from_object(obj) 14 # 初始化数据库 15 db.init_app(app) 16 # migrate = Migrate(app, db) 17 migrate = Migrate() 18 migrate.init_app(app=app,db=db) 19 # 引入蓝图,需要放在内部import,初始化db后再导入蓝图 20 from my_shop.user import user 21 app.register_blueprint(user) 22 from my_shop.menu import menu 23 app.register_blueprint(menu) 24 from my_shop.role import role 25 app.register_blueprint(role) 26 from my_shop.category import category 27 app.register_blueprint(category) 28 from my_shop.category import attribute 29 app.register_blueprint(attribute) 30 # 注册task的蓝图 31 from my_shop.task import task 32 app.register_blueprint(task) 33 return app
tasks.py代码如下:
1 from celery import Celery 2 import time 3 4 celery = Celery("tasks", 5 broker="redis://localhost:6379/3", 6 backend="redis://localhost:6379/4") 7 8 @celery.task 9 def send_mail(): 10 print('测试异步任务开始....') 11 time.sleep(3) 12 print('测试异步任务结束') 13 return 'OK'
task/__init__.py代码如下:
from flask import Blueprint task = Blueprint('task', __name__) from my_shop.task import view
task/view.py代码如下:
1 from my_shop.task import task 2 from my_shop.task.tasks import send_mail 3 4 @task.route('/add_task',methods=['GET']) 5 def add_task(): 6 """ 7 添加任务 8 :return: 9 """ 10 send_mail.delay() 11 return '添加成功 !!!'

浙公网安备 33010602011771号