celery二:在项目中使用celery

将celery配置文件和任务拆分为两个文件。

可以把celery配置成一个应用,目录格式如下:

myproject/__init__.py

myproject/celery.py

myproject/tasks.py

# celery app文件及其配置

from __future__ import absolute_import  # 使用绝对导入;如果有相对导入,则会转换为绝对导入
from __future__ import unicode_literals
from celery import Celery

app = Celery('proj',
             broker='redis://:123456@192.168.1.10',
             backend='redis://:123456@192.168.1.10',
             include=['myproj.tasks'])
# include 是告诉celery,app的所有任务都存放在proj目录的tasks文件中
app.conf.update(result_expires=3600,)  # redis或rabbitMQ中的结果,3600秒以后将丢弃


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

 

 

# tasks.py 存放任务的文件

from __future__ import absolute_import
from __future__ import unicode_literals
from myproj.celery import app

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

 

 

# 启动worker,-A的参数,可以使用tasks文件,也可以使用目录名myproj:

celery -A myproj worker --loglevel=info

 

启动多个worker:可以开多个窗口,也可以使用 celery multi开启多个worker。

使用celery multi开启多个worker,是在后台运行,生产上应该使用此方式。

celery multi start w1 -A proj -l info

celery multi start w2 -A proj -l info

celery multi start w3 -A proj -l info

停用worker: celery multi stop work w1

 

posted on 2018-08-18 14:07  myworldworld  阅读(845)  评论(0)    收藏  举报

导航