/proj -__init__ -app.py #实例化celery对象 -celeryconfig.py #celery的配置文件 -tasks.py #celery编写任务文件
#coding:utf-8 from __future__ import absolute_import from celery import Celery app = Celery(‘proj‘, include=[‘proj.tasks‘]) #实例化celery对象 app.config_from_object(‘proj.celeryconfig‘) #引入配置文件 if __name__ == ‘__main__‘: app.start()
#coding:utf-8 from __future__ import absolute_import from proj.app import app @app.task() def add(x, y): return x + y
#coding:utf-8 from kombu import Queue BROKER_URL = ‘amqp://guest:guest@127.0.0.1:5672//‘ # 使用RabbitMQ作为消息代理 CELERY_RESULT_BACKEND = ‘redis://127.0.0.1:6379/0‘ # 把任务结果存在了Redis CELERY_TASK_SERIALIZER = ‘msgpack‘ # 任务序列化和反序列化使用msgpack方案 CELERY_RESULT_SERIALIZER = ‘json‘ # 读取任务结果一般性能要求不高,所以使用了可读性更好的JSON CELERY_TASK_RESULT_EXPIRES = 60 * 60 * 24 # 任务过期时间,不建议直接写86400,应该让这样的magic数字表述更明显 CELERY_ACCEPT_CONTENT = [‘json‘, ‘msgpack‘] # 指定接受的内容类型 CELERY_QUEUES = ( #设置add队列,绑定routing_key Queue(‘add‘, routing_key=‘xue.add‘), ) CELERY_ROUTES = { #projq.tasks.add这个任务进去add队列并routeing_key为xue.add ‘projq.tasks.add‘: { ‘queue‘: ‘add‘, ‘routing_key‘: ‘xue.add‘, } }
在proj的上层目录输入
celery -A proj.app worker -Q add -l info
发布任务
from proj.tasks import add add.delay(2,3)
CELERY_QUEUES = ( #设置add队列,绑定routing_key Queue(‘add‘, routing_key=‘xue.add‘), ) CELERY_ROUTES = { #projq.tasks.add这个任务进去add队列并routeing_key为xue.add ‘projq.tasks.add‘: { ‘queue‘: ‘add‘, ‘routing_key‘: ‘xue.add‘, }
原文:https://www.cnblogs.com/-wenli/p/10976614.html