celery mysql flask_【译】在Flask中使用Celery

为了在后台运行任务,我们可以使用线程(或者进程)。

使用线程(或者进程)的好处是保持处理逻辑简洁。但是,在需要可扩展的生产环境中,我们也可以考虑使用Celery代替线程。

Celery是什么?

Celery是个异步分布式任务队列。

通过Celery在后台跑任务并不像用线程那么的简单,但是用Celery的话,能够使应用有较好的可扩展性,因为Celery是个分布式架构。下面介绍Celery的三个核心组件。

生产者(Celery client)。生产者(Celery client)发送消息。在Flask上工作时,生产者(Celery client)在Flask应用内运行。

消费者(Celery workers)。消费者用于处理后台任务。消费者(Celery client)可以是本地的也可以是远程的。我们可以在运行Flask的server上运行一个单一的消费者(Celery workers),当业务量上涨之后再去添加更多消费者(Celery workers)。

消息传递者(message broker)。生产者(Celery client)和消费者(Celery wor

为了在后台运行任务,我们可以使用线程(或者进程)。

使用线程(或者进程)的好处是保持处理逻辑简洁。但是,在需要可扩展的生产环境中,我们也可以考虑使用Celery代替线程。

Celery是什么?

Celery是个异步分布式任务队列。

通过Celery在后台跑任务并不像用线程那么的简单,但是用Celery的话,能够使应用有较好的可扩展性,因为Celery是个分布式架构。下面介绍Celery的三个核心组件。

生产者(Celery client)。生产者(Celery client)发送消息。在Flask上工作时,生产者(Celery client)在Flask应用内运行。

消费者(Celery workers)。消费者用于处理后台任务。消费者(Celery client)可以是本地的也可以是远程的。我们可以在运行Flask的server上运行一个单一的消费者(Celery workers),当业务量上涨之后再去添加更多消费者(Celery workers)。

消息传递者(message broker)。生产者(Celery client)和消费者(Celery workers)的信息的交互使用的是消息队列(message queue)。Celery支持若干方式的消息队列,其中最常用的是RabbitMQ和Redis.

话不多说上代码先。代码中包含两个例子:异步发送邮件;开始一或多个异步工作,然后在网页上更新其进度。

Flask结合Celery

Flask与Celery结合极其简单,无需其他扩展。一个使用Celery的Flask应用的初始化过程如下:通过创建Celery类的对象,完成Celery的初始化。创建Celery对象时,需要传递应用的名称以及消息传递者(message broker)的URL。

from flask importFlaskfrom celery importCelery

app= Flask(__name__)

app.config['CELERY_BROKER_URL'] = 'redis://localhost:6379/0'app.config['CELERY_RESULT_BACKEND'] = 'redis://localhost:6379/0'celery= Celery(app.name, broker=app.config['CELERY_BROKER_URL'])

celery.conf.update(app.config)

其中的URL参数告诉了Celery,消息传递的服务的位置。如果消息传递者用的不

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值