0x00 起因

想让自己的程序能在Web界面能够进入任务队列并执行,这就需要用到Python的异步任务队列。主要有以下几种Celery,RQ,heuy等。我就使用了功能最为强大的Celery。

0x01 安装

安装redis

sudo apt-get install redis-server

安装Python库

pip install celery, redis

0x02 使用

from celery import Celery
cel = Celery('tasks', broker='redis://localhost')

@cel.task()
# 只需在需要异步调用的函数前使用装饰器
def add(x, y):
    return x + y

@cel.task()
# 想要调用某个类的方法需要再定义个函数
def use_class_method():
    ClassName().method()

在命令行下运行,以启动celery

celery -A 任务所在文件名 worker -l info --config=celeryconfig
#celeryconfig.py文件内容为CELERY_IMPORTS=["文件所在相对位置"]

运行异步任务

add.delay(x, y)
use_class_method.delay()

0x03 最后
为什么明明自己研究了好几天,写出来的东西这么少呢