celery python

项目中使用Celery

1.  项目目录结构

project
    |-- __init__.py
    |-- celery.py   # 配置文档
    |-- tasks.py    # 任务函数
    |-- tasks2.py   # 任务函数

2.  项目文件

project/celery.py
# from celery import Celery 默认当前路径,更改为绝对路径(当前路径有个celery.py文件啦)
from __future__ import absolute_import, unicode_literals
from celery import Celery

app = Celery('project',
             broker='redis://localhost',
             backend='redis://localhost',
             include=['project.tasks','project.tasks2'])  # 配置文件和任务文件分开了,可以写多个任务文件

# app 扩展配置
app.conf.update(
    result_expires=3600,
)

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

celery.py作用相当于配置文件

project/tasks.py
from __future__ import absolute_import, unicode_literals
from .celery import app

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

@app.task
def mul(x, y):
    return x * y
project/tasks2.py
from __future__ import absolute_import, unicode_literals
from .celery import app

@app.task
def hello():
    return 'Hello World'

3.  启动项目worker

celery -A project worker -l info

其中 project 为项目名

另启终端,与project同目录进入python3

4.  实现分布式 

当启动多个时 celery -A project worker -l info,去broker去相应任务,实现分布式

5.  后台启动woker

celery multi start w1 -A project -l info
celery multi start w2 -A project -l info
celery multi start w3 -A project -l info
 
celery multi restart w1 -A project -l info
celery multi stop w1 w2 w3        # 任务立刻停止
celery multi stopwait w1 w2 w3    # 任务执行完,停止

猜你喜欢

转载自blog.csdn.net/qq_37049050/article/details/82347876