Flask-celery

celery介绍

Celery - 分布式任务队列. Celery 是一个简单、灵活且可靠的,处理大量消息的分布式系统,并且提供维护这样一个系统的必需工具。

它是一个专注于实时处理的任务队列,同时也支持任务调度.

Celery是基于Python开发的一个分布式任务队列框架,支持使用任务队列的方式在分布的机器/进程/线程上执行任务调度.

安装celery

创建虚拟环境
    mkvirtualenv celeryenv
使用pip安装
    pip install celery

使用celery

创建python工程, 然后新建tasks.py文件, 写入以下代码
from celery import Celery

# 创建celery对象,设置任务队列使用redis
app = Celery('tasks', broker='redis://localhost:6379')

# 创建任务
@app.task
def add(a, b):    
    time.sleep(5)    
    n = a + b    
    print(n)    
    return n

if __name__ == '__main__':
    # add(10, 5)    
    # 调用任务
    add.delay(10, 5)
    print('程序执行结束')
    

启动celery服务

celery -A tasks worker --loglevel=info

redis操作:

安装redis
    pip install redis
启动redis服务
    redis-server

Flask中使用celery

在之前创建的虚拟环境celeryenv中安装flask
安装flask
    pip install flask
创建FlaskProject.py文件,并写入以下代码
from flask import Flask
from tasks import send_email

app = Flask(__name__)

@app.route('/')
def index():
    send_email.delay('111@qq.com')
    return "激活邮件已发送, 请注意查收"

if __name__ == '__main__':
    app.run()

在之前的tasks.py文件, 添加以下代码
@app.task
def send_email(receive_addr):
    time.sleep(7)
    print(receive_addr)
    

Django中使用celery

安装celery
pip install celery
安装redis
pip install redis
安装sqlalchemy
pip install sqlalchemy
启动celery服务
celery -A proj worker -l info
注意: proj是工程名称
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 22年12月更新:个人网站关停,如果仍旧对旧教程有兴趣参考 Github 的markdown内容[https://...
    tangyefei阅读 35,288评论 22 257
  • 特么的。。。写好的东西不见了一半。。。又得重写。。星期一开始,有同事和我说要不要把我们的项目加上celery,异步...
    LEONYao阅读 11,730评论 2 18
  • 在 上一篇文章 中,我们对 Celery 有了初步的认识,接下来就通过两个例子来进行实战。最终的效果图如下: 项目...
    与蟒唯舞阅读 9,376评论 3 20
  • 1.定义: Celery是一个异步的任务队列(也叫做分布式任务队列) 2.工作结构 Celery分为3个部...
    四号公园_2016阅读 28,858评论 5 60
  • 原本就有用Flask celery来做后台异步任务。现在有需求需要添加定时任务例如每一小时检查一下还在使用的,但是...
    cafedeflore阅读 16,544评论 5 3