深入Celery之使用队列以及优先级提高响应
来源:互联网 发布:35岁程序员职业规划 编辑:程序博客网 时间:2024/06/07 16:32
多个队列:
1. Celery默认使用的队列名为celery默认绑定在direct交换机celery,可通过CELERY_DEFAULT_QUEUE/CELERY_DEFAULT_EXCHANGE/CELERY_DEFAULT_ROUTING_KEY等参数配置修改.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
#!/usr/bin/env python
# -*- coding: utf-8 -*-
# @Date : 2016-12-24 17:32:54
# @Author : 李满满 (xmdevops@vip.qq.com)
# @Link : http://xmdevops.blog.51cto.com/
# @Version : $Id$
from
__future__
import
absolute_import
# 说明: 导入公共模块
from
kombu
import
Queue, Exchange
# 说明: 导入其它模块
# BROKER_URL = 'amqp://root:qwertyuiop@172.24.10.1:5672//'
# CELERY_RESULT_BACKEND = 'redis://172.24.10.1:6379/0'
BROKER_URL
=
'amqp://root:qwertyuiop@10.2.5.51:5672//'
CELERY_RESULT_BACKEND
=
'redis://10.2.5.51:5123/0'
CELERY_TASK_SERIALIZER
=
'msgpack'
CELERY_RESULT_SERIALIZER
=
'json'
CELERY_TASK_RESULT_EXPIRES
=
60
*
60
*
24
CELERY_ACCEPT_CONTENT
=
[
'json'
,
'msgpack'
]
CELERYD_MAX_TASKS_PER_CHILD
=
40
CELERY_QUEUES
=
(
Queue(
name
=
'email_queue'
,
exchange
=
Exchange(
'email_exchange'
,
'direct'
),
routing_key
=
'email'
),
Queue(
name
=
'wixin_queue'
,
exchange
=
Exchange(
'wixin_exchange'
,
'direct'
),
routing_key
=
'wixin'
),
)
CELERY_ROUTES
=
{
'work.notify.email.send_mail'
: {
'queue'
:
'email_queue'
,
'routing_key'
:
'email'
}
}
扩展: 多个队列主要为了解决由于默认子进程池大小有限制,当其中一个任务消息量特别大时,那么其它重要消息可能会被被滞后处理,导致严重影响用户体验,可以根据业务实际情况将不同的任务放于不同的队列中且指定不同的子进程数来提高整体的响应,如上分别定义了绑定到email_exchange的direct交换机的email_queue和绑定到wixin_exchange的direct交换机的wixin_queue
疑问: Queue应该是binding到交换机上,为何参数中给出的是routing_key很奇怪...?
注意: 启动的时候并不推荐在一个worker进程中启动这两个队列(celery worker -A work.app -l info),强烈建议分开进程跑(celery worker -A work.app -c 2 -Q email_queue -l info;celery worker -A work.app -c 4 -Q wixin_queue -l info),分开独立工作进程跑,进程之间不会互相影响~
- 深入Celery之使用队列以及优先级提高响应
- celery多个队列优先级实现
- Django之celery分布式异步任务队列
- 使用多线程提高GUI响应,以及结束任务的方法
- 算法之优先级队列
- C++ 之优先级队列
- 数据结构之优先级队列
- RabbitMQ之队列优先级
- 函数对象-------------以及优先级队列
- 优先级队列的使用
- 优先级队列的使用
- 优先级队列的使用
- 优先级队列的使用
- 优先级队列---使用堆
- 使用celery之怎么让celery跑起来
- (九)链式队列以及优先级队列应用
- 使用Celery
- 使用Celery
- java提高篇(六)-----关键字static
- android模拟器配置之genymotion
- 安卓学习历程-第二天
- 表单提交示例(Jsp+Servlet+jQueryForm)
- F1V3.0-15 前端开发环境搭建
- 深入Celery之使用队列以及优先级提高响应
- SQL基础语句汇总
- iOS Charts框架绘制折线图、统计饼状图
- 关于禅道发信配置
- 安卓微信不回调授权界面,无法获取code原因
- Erlang启动过程分析
- 微信支付集成
- vs2008 the operation could not be completed. 未指定的错误
- Spring--->IOC(DI)使用方式