celery cluser redis_Celery+Redis实现异步任务(2)

相关:

使用配置文件和队列

创建文件夹apps

创建/apps/celery_conf.py

from kombu import Queue

BROKER_URL = 'redis://localhost:6379/1'

CELERY_RESULT_BACKEND = 'redis://localhost:6379/2'

CELERY_IMPORTS = (

'apps.task1',

'apps.task2'

)

# 队列

CELERY_QUEUES = (

Queue('task_add', routing_key='task_add'),

Queue('task_subs', routing_key='task_subs')

)

# 给任务绑定队列

CELERY_ROUTES = {

'apps.task1.add':{'queue':'task_add','routing_key':'task_add'},

'apps.task2.subs':{'queue':'task_subs','routing_key':'task_subs'}

}

创建 /apps/__init__.py

from celery import Celery

app = Celery('test_task')

app.config_from_object('apps.celery_conf')

创建 /apps/task1.py

import celery

from apps import app

@app.task()

def add(x, y):

return x+y

创建/apps/task2.py

from apps import app

@app.task()

def subs(x, y):

return x-y

在于apps同级的目录下面创建hello.py

from apps.task1 import add

from apps.task2 import subs

if __name__ == "__main__":

add.delay(1, 2)

# add.apply_async(args=[1, 2])

subs.delay(1, 2)

# subs.apply_async(args=[1, 2])

启动命令:

celery -A apps worker -l INFO -n worker1@%h -Q task_add

# 另开一个窗口

celery -A apps worker -l INFO -n worker1@%h -Q task_subs

运行 hello.py

python hello.py

代码说明:

task.delay():这是apply_async()方法的别名,接受的参数较为简单。

task.apply_async():可以接受复杂参数。task.apply_async(args=[1,8], kwargs={"name":"123"})

配置多个队列的方法:

apply_async(queue=队列名)

app.task(queue=队列名)

配置文件的方式

CELERY_QUEUES = (

Queue('apps_task1', exchange=Exchange('apps_task1'), routing_key='apps_task1'),

Queue('apps_task2', exchange=Exchange('apps_task2'), routing_key='apps_task2'),

)

CELERY_ROUTES = {

'apps.task1.add': {'queue': 'apps_task1', 'routing_key': 'apps_task1'},

'apps.task2.subs': {'queue': 'apps_task2', 'routing_key': 'apps_task2'},

}

注意:

CELERY_ROUTES的作用是,给任务分配queue和routing_key,然后worker根据分配的queue值执行相应的任务。

CELERY_ROUTES中key得到指定的方法名。

exchange可以不用,这是rabbitmq必须的,redis可以不用。

queue和routing_key这两个值的名字不需要保持一致,那么为了方便使用和检查,最好保持一致。

CELERY_ROUTES中其实可以不用指定routing_key,可以在apply_async方法传入

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值