Django 是一个强大的 Python Web 框架,而 Celery 是一个分布式任务队列,用于处理后台任务和异步执行。将 Celery 集成到 Flask 应用中可以帮助你更好地管理后台任务。以下是一个简单的方案,展示如何在 Flask 应用中集成 Celery。
首先,确保你已经安装了 Flask 和 Celery。你可以使用 pip 来安装这些依赖:
pip install Flask celery
在你的 Flask 应用中配置 Celery。假设你的应用文件名为 app.py
,你可以按照以下步骤进行配置:
from flask import Flask
from celery import Celery
# 创建 Flask 应用
app = Flask(__name__)
# 配置 Celery
app.config['CELERY_BROKER_URL'] = 'redis://localhost:6379/0' # 使用 Redis 作为消息代理
app.config['CELERY_RESULT_BACKEND'] = 'redis://localhost:6379/0' # 使用 Redis 存储任务结果
app.config['CELERY_ACCEPT_CONTENT'] = ['json']
app.config['CELERY_TASK_SERIALIZER'] = 'json'
app.config['CELERY_RESULT_SERIALIZER'] = 'json'
app.config['CELERY_TIMEZONE'] = 'UTC'
# 创建 Celery 实例
celery = Celery(
app.import_name,
backend=app.config['CELERY_RESULT_BACKEND'],
broker=app.config['CELERY_BROKER_URL']
)
# 将 Celery 实例与 Flask 应用关联
celery.conf.update(app.config)
# 确保在创建 Celery 实例之前配置好所有选项
@celery.task()
def add(x, y):
return x + y
在你的 Flask 应用中创建一个任务。例如,你可以创建一个简单的任务来添加两个数:
@app.route('/add/<int:x>/<int:y>')
def add_numbers(x, y):
task = add.delay(x, y)
return f"Task ID: {task.id}"
启动 Celery worker 来处理任务队列中的任务。你可以在终端中运行以下命令:
celery -A app.celery worker --loglevel=info
现在你可以访问 /add/<int:x>/<int:y>
路由来测试任务是否正常工作。例如,访问 http://127.0.0.1:5000/add/3/4
应该返回类似以下的响应:
Task ID: 9f8d4e0b-6a9b-434d-9b5d-41b4a8b3f84a
你可以使用 Celery 的管理界面或命令行工具来查看任务的状态:
celery -A app.celery inspect active
通过以上步骤,你已经成功地将 Celery 集成到 Flask 应用中,并创建了一个简单的任务来添加两个数。你可以根据需要扩展这个方案,添加更多的任务和复杂的后台处理逻辑。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。