Flask-Celery

Flask-Celery 是一个 Flask 扩展,它将 Flask 应用程序与 Celery 任务队列系统集成在一起。Celery 是一个异步任务队列/作业队列,用于在分布式系统中处理并发任务。Flask-Celery 使得在 Flask 应用中使用 Celery 变得更加简单。

安装 Flask-Celery

首先,你需要安装 Flask-Celery。使用 pip 安装:

pip install Flask-Celery

创建 Flask 应用

创建一个新的 Flask 应用:

from flask import Flask
from flask_celery import make_celery
app = Flask(__name__)
celery = make_celery(app)
@app.route('/')
def index():
    return 'Hello, World!'
if __name__ == '__main__':
    app.run()

定义任务

在 Flask 应用中,你可以定义 Celery 任务。这些任务通常在 tasks.py 文件中定义。

from celery import task
from celery.decorators import periodic_task
from celery.task.schedules import crontab
@task
def add(x, y):
    return x + y
@periodic_task(run_every=crontab(minute='*/1'))
def periodic_add():
    print('Periodic add task executed')

执行任务

在 Flask 视图函数中,你可以调用这些任务:

from flask import Flask, jsonify
from tasks import add
app = Flask(__name__)
celery = make_celery(app)
@app.route('/add', methods=['POST'])
def add_task():
    x = int(request.json.get('x', 0))
    y = int(request.json.get('y', 0))
    task = add.delay(x, y)
    return jsonify({'task_id': task.id}), 202
if __name__ == '__main__':
    app.run()

查询任务结果

你可以使用任务 ID 来查询任务的状态和结果:

from tasks import add
task = add.apply_async(args=(4, 4))
result = task.get()
print(result)  # 输出: 8

运行 Celery worker

最后,你需要启动 Celery worker 来处理任务:

celery -A tasks worker --loglevel=info

这个命令会启动一个 Celery worker 进程,它会监听任务队列并执行任务。

注意事项

  • 确保你的消息代理(如 Redis 或 RabbitMQ)正在运行。
  • 如果你使用的是 Windows 系统,Celery 不支持直接在 Windows 上运行 worker,你需要使用一个兼容的操作系统或者使用 Docker 等容器化技术。
  • 在生产环境中,你可能需要配置多个 worker 并考虑使用监督器(如 supervisord)来管理它们。
    这个教程提供了一个基本的 Flask-Celery 集成的概述。在实际应用中,你可能需要根据你的具体需求来调整配置和任务定义。
  • 5
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

吉小雨

你的激励是我创作最大的动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值