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) 收藏 举报