栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

python + celery简例

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

python + celery简例

在网上找了半天,也没找到完整的例子,自己写吧

1. 一个队列,自定义10个优先级,修改默认celery队列名称

1) testcelery.py

from celery import Celery
import time

broker  = 'redis://:passwd@127.0.0.1:6279/0'
backend = 'redis://:passwd@127.0.0.1:6279/1'
app = Celery('test',backend=backend,broker=broker)

app.conf.broker_transport_options = {
    'priority_steps': list(range(10)),
    'sep': ':',
    'queue_order_strategy': 'priority',
}

app.conf.task_default_queue = 'autotest'

@app.task(priority=0)
def add(x, y):
    time.sleep(2)
    return x + y

@app.task(priority=5)
def minus(x, y):
    time.sleep(1)
    return x - y

@app.task(priority=8)
def multiply(x, y):
    time.sleep(1)
    return x * y
 

2)启动celery命令

celery worker -A testcelery  -l info

3)任务

#!/usr/bin/env python
# -*- coding: UTF-8 -*-

from testcelery  import add
from testcelery  import minus
from testcelery  import multiply

count=100
while count > 0:
    count -=1
    # 将任务函数加入到队列中,可使用delay()
    result = add.delay(count, count-1)
    result = minus.delay(count, count-1)
    result = multiply.delay(3, count-1)


执行

python add_task.py
 

2. 2个队列,多个优先级

1) testcelery.py

from celery import Celery
import time


broker  = 'redis://:passwd@127.0.0.1:6279/0'
backend = 'redis://:passwd@127.0.0.1:6279/1'
app = Celery('test',backend=backend,broker=broker)

app.conf.broker_transport_options = {
    'priority_steps': list(range(10)),
    'sep': ':',
    'queue_order_strategy': 'priority',
}

# 不同函数在不同队列里

CELERY_ROUTES = {'app.addfeed': {'queue': 'feed', 'routing_key':'for_feed'},
                'app.minus': {'queue': 'autotest','routing_key':'for_minus'}
                }


app.conf.task_default_queue = 'autotest'
app.conf.task_queues = (
    Queue('autotest',    routing_key='for_minus'),
    Queue('feed', routing_key='for_feed'),
)

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

@app.task(priority=5)
def minus(x, y):
    return x - y

@app.task(priority=8)
def multiply(x, y):
    return x * y

@app.task(priority=0)
def addfeed(x, y):
    time.sleep(2)
    return x + y*2
  

2)启动celery命令

celery  worker  -A testcelery  -l info -Q  feed,autotest

3)任务文件 

#!/usr/bin/env python
# -*- coding: UTF-8 -*-

from testcelery  import add
from testcelery  import minus
from testcelery  import multiply

count=100
while count > 0:
    count -=1
     # 将任务函数加入到队列中,可使用delay()
    result = minus.delay(count, count-1)
    result = addfeed.delay(count, 2)


执行

python add_task.py

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/875752.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号