python多个定时任务_python celery多worker、多队列、定时任务

多worker、多队列

celery是一个分布式的任务调度模块,那么怎么实现它的分布式功能呢,celery可以支持多台不同的计算机执行不同的任务或者相同的任务。

如果要说celery的分布式应用的话,就要提到celery的消息路由机制,提到AMQP协议。

简单理解:

可以有多个"消息队列"(message Queue),不同的消息可以指定发送给不同的Message Queue,

而这是通过Exchange来实现的,发送消息到"消息队列"中时,可以指定routiing_key,Exchange通过routing_key来吧消息路由(routes)到不同的"消息队列"中去。

exchange 对应 一个消息队列(queue),即:通过"消息路由"的机制使exchange对应queue,每个queue对应每个worker。

下面我们来看一个列子:

vi tasks.py#!/usr/bin/env python#-*- coding:utf-8 -*-

from celery importCelery

app=Celery()

app.config_from_object("celeryconfig") #指定配置文件

@app.taskdeftaskA(x,y):return x +y

@app.taskdeftaskB(x,y,z):return x + y +z

@app.taskdefadd(x,y):return x + y

编写配置文件,配置文件一般单独写在一个文件中。

vi celeryconfig.py#!/usr/bin/env python#-*- coding:utf-8 -*-

from kombu importExchange,Queue

BROKER_URL= "redis://47.106.106.220:5000/1"CELERY_RESULT_BACKEND= "redis://47.106.106.220:5000/2"CELERY_QUEUES=(

Queue("default",Exchange("default"),routing_key="default"),

Queue("for_task_A",Exchange("for_task_A"),routing_key="for_task_A"),

Queue("for_task_B",Exchange("for_task_B"),routing_key="for_task_B")

)#路由

CELERY_ROUTES ={'tasks.taskA':{"queue":"for_task_A",&#

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值