Flask-Celery 示例项目教程
1. 项目的目录结构及介绍
flask-celery-example/
├── app.py
├── requirements.txt
├── run-redis.sh
├── templates/
│ └── index.html
├── LICENSE
└── README.md
app.py
: 项目的主文件,包含Flask应用和Celery任务的定义。requirements.txt
: 项目依赖的Python包列表。run-redis.sh
: 启动Redis服务的脚本。templates/
: 存放HTML模板的目录。LICENSE
: 项目的开源许可证文件。README.md
: 项目的说明文档。
2. 项目的启动文件介绍
app.py
app.py
是项目的启动文件,主要包含以下内容:
-
Flask应用的创建和配置:
from flask import Flask app = Flask(__name__) app.config.from_mapping( CELERY=dict( broker_url="redis://localhost", result_backend="redis://localhost", task_ignore_result=True, ), )
-
Celery应用的初始化:
from celery import Celery def celery_init_app(app: Flask) -> Celery: class FlaskTask(Task): def __call__(self, *args: object, **kwargs: object) -> object: with app.app_context(): return self.run(*args, **kwargs) celery_app = Celery(app.name) celery_app.config_from_object(app.config["CELERY"]) celery_app.Task = FlaskTask return celery_app
-
Celery任务的定义:
@celery_app.task def example_task(): # 任务逻辑 pass
3. 项目的配置文件介绍
requirements.txt
requirements.txt
文件列出了项目运行所需的Python包及其版本:
Flask==2.0.1
Celery==5.1.2
redis==3.5.3
run-redis.sh
run-redis.sh
是一个启动Redis服务的脚本,内容如下:
#!/bin/bash
docker run -d -p 6379:6379 redis
配置文件
在 app.py
中,项目的配置通过 app.config
进行设置:
app.config.from_mapping(
CELERY=dict(
broker_url="redis://localhost",
result_backend="redis://localhost",
task_ignore_result=True,
),
)
这些配置项包括:
broker_url
: Celery任务队列的地址。result_backend
: 任务结果存储的地址。task_ignore_result
: 是否忽略任务结果。
通过以上配置,项目可以正确地使用Flask和Celery进行异步任务处理。