Celery

Celery 是 Distributed Task Queue 分布式任务队列。

不太理解异步任务队列,看到有人说:

分布式异步任务队列的作用就是把 python 代码放到不同的环境上面去跑, 核心难题就是如何序列化和反序列化函数, 函数都有复杂的依赖关系,调用系统函数,或者用户自定义函数, 这些依赖都要一起序列化传输。暂时先这么理解

Celery 基本工作就是管理分配任务到不同的服务器上,并且取得相应的结果,至于服务器之间是如何通信的,Celery 并不能解决这个问题。

Celery 分为三部分:消息中间件 broker,任务执行单元 worker 和 任务结果存储。

broker:消息传输的中间件。每当应用程序调用 celery 的异步任务时,会向 broker 传递消息。然后 worker 会取到消息。就是一个消息队列。broker 选择方案:RabbitMQ,Redis
backend:存储消息以及 celery 执行的一些消息和结果。有数据库和 redis 可选。


来源于网络,侵权请告知

异步任务和定时任务

直接 pip install celery 即可安装。
一般目录格式:

project/__init__.py
       /celery.py
       /tasks.py
# project.celery.py
from __future__ import absolute_import, unicode_literals
from celery import Celery
 
app = Celery('proj',
             broker='redis://',
             backend='redis://',
             include=['project.tasks'])
 
# Optional configuration, see the application user guide.
app.conf.update(
    result_expires=3600,
)
if __name__ == '__main__':
    app.start()
# project/tasks.py
from __future__ import absolute_import, unicode_literals
from .celery import app

@app.task
def add(x, y):
    return x + y

celery 启动 worker
celery -A 项目名称 worker -l info/debug
配置多个 worker
celery multi start w1 -A poject -l info
celery 启动定时任务 beat
celery -A 项目名称.任务文件 beat -l info/debug
Django 结合 celery,可以使用 pip install django-celery

注:在 CentOs 中,我的 Python3 环境是编译源代码安装的,在 pip3 install celery 之后,bash 总说找不到命令 celery。但是 Python2 环境下可以安装成功。很迷。。。

你可能感兴趣的:(Celery)