文档章节

并行Python框架Celery的配置方法

openthings
 openthings
发布于 2015/05/28 08:34
字数 824
阅读 4754
收藏 3

1、Configuration

Celery,作为一个consumer工具不需要太多的操作。它有输入和输出通道,通过输入通道连接到broker(如AMQP服务Channel)或者通过输出通道连接到结果的backend(用于获取结果,不是必须的,因为有的操作只是单向分发任务)。 这一些控制通过制定一些配置参数来完成。

缺省的配置对大多数使用场景已足够,但很多时候可能需要自己的设置。熟悉可配置的选项是一个好主意这里是参考:Configuration and defaults

配置可以在应用里直接设置或者通过配置模块(也是一个Python文件,而不是一个特殊的格式,真是一个好主意!)。 下面给出任务数据序列化的这个例子:CELERY_TASK_SERIALIZER

app.conf.CELERY_TASK_SERIALIZER = 'json'

如果要配置很多参数,使用update方法:

app.conf.update(
    CELERY_TASK_SERIALIZER='json',
    CELERY_ACCEPT_CONTENT=['json'],  # Ignore other content
    CELERY_RESULT_SERIALIZER='json',
    CELERY_TIMEZONE='Europe/Oslo',
    CELERY_ENABLE_UTC=True,)

2、使用配置文件

对于大的项目使用特定的配置模块是一好主意,尤其是对于周期性的任务或者任务路由等参数,不建议使用硬编码的方法。而且最好将配置文件保存在一个中心存储区域,以便于实施集中化的管理、迁移和部署,减少配置错误带来的问题。

告诉Celery的运行实例使用给定的配置文件,调用 app.config_from_object() 方法:

app.config_from_object('celeryconfig')

这个模块经常命名为“celeryconfig”, 但是你可以使用任何其它的名字,因为这其实也是一个Python模块。

这个配置模块 celeryconfig.py 必须在Python可找到得的调用路径之中, 看起来像这个样子:

celeryconfig.py:

BROKER_URL = 'amqp://'
CELERY_RESULT_BACKEND = 'amqp://'
CELERY_TASK_SERIALIZER = 'json'
CELERY_RESULT_SERIALIZER = 'json'
CELERY_ACCEPT_CONTENT=['json']
CELERY_TIMEZONE = 'Europe/Oslo'
CELERY_ENABLE_UTC = True

为了检验这个配置参数正确,没有语法错误,可以像下面这样import这个模块:

$ python -m celeryconfig

完整的配置参数参见: Configuration and defaults.

下面演示一下配置文件的强大能力,关于任务的路由, 把misbehaving放到特定的队列中去:

celeryconfig.py:

CELERY_ROUTES = {
    'tasks.add': 'low-priority',}

可以设置处理的频率,下面的方式限制每分钟只处理十个任务:

celeryconfig.py:

CELERY_ANNOTATIONS = {
    'tasks.add': {'rate_limit': '10/m'}}

如果使用RabbitMQ 或 Redis 作为broker, 这个rate limit也可以在运行时进行设置:

$ celery -A tasks control rate_limit tasks.add 10/m
worker@example.com: OK
    new rate limit set successfully

关于任务的路由更多的信息看这里 Routing Tasks , 设置参数 CELERY_ANNOTATIONS , 或者 Monitoring and Management Guide 查看关于远程控制命令的说明,可以监控到你的Worker正在干些什么事情。


© 著作权归作者所有

openthings
粉丝 325
博文 1140
码字总数 689435
作品 1
东城
架构师
私信 提问
基于Celery的并行处理工程-OpenWorker快速安装

Celery 是一个简单灵活的Python并行处理框架,但是相关的几个工程需要独自安装和配置,给小白的使用带来困难。 OpenWorker是基于Python的并行处理框架,将集成Celery、Flower、Jobtastic和R...

openthings
2015/08/10
625
4
基于Celery的并行处理工程-OpenWorker

OpenWorker-初始建立(2015-05-29),欢迎参与:https://github.com/supergis/OpenWorker。 OpenWorker-基于Python的并行处理框架,将集成Celery、Flower、Jobtastic和Rodeo工程,可以通过...

openthings
2015/05/29
458
1
Python 并行分布式框架 Celery

版权声明:本文为博主原创文章,转载请注明来源。开发合作联系luanpenguestc@sina.com https://blog.csdn.net/luanpeng825485697/article/details/82829738 在学习Celery之前,我先简单的去了...

数据架构师
2018/09/24
0
0
Python 并行分布式框架之 Celery

Celery (芹菜)是基于Python开发的分布式任务队列。它支持使用任务队列的方式在分布的机器/进程/线程上执行任务调度。 架构设计 Celery的架构由三部分组成,消息中间件(message broker)...

naughty
2015/03/12
4.2K
6
python-celery使用教程

Celery Celery是Python开发的分布式任务调度模块。分为任务分发,任务队列,worker3个部分。celery的出现,解决了python运行后台任务的需求。 这篇文章介绍的celery版本是3.1.18 celery架构 ...

go-skyblue
2015/07/23
1K
0

没有更多内容

加载失败,请刷新页面

加载更多

Phpstorm2018 永久激活

1、安装phpstorm,安装包请自行官网下载 http://www.jetbrains.com/phpstorm/download/ 2、下载JetbrainsCrack.jar文件,存放至你的phpstorm执行文件同级目录下 下载JetbrainsCrack.jar 提取...

happyfish319
19分钟前
5
0
谈一谈Android进程间通信的几种方式

###来看一下Android中除了AIDL还有哪些进程间通信的方式: 1、Bundle Bundle实现了Parcelable,所以在Android中我们可以通过Intent在不同进程间传递Bundle数据。 但是在Intent 传输数据的过程...

二营长的意大利炮手
20分钟前
6
0
互联网薪资“高开低走”,你的能力是否真的可以匹配高薪?

对于国内外主流互联网大厂,技术出身似乎已经成为各大掌门人的必备标签。谷歌 CEO 桑达尔·皮查伊、马克·扎克伯格、李彦宏、马化腾、雷军等等皆为技术人出身,都曾参与了公司内部重要产品的...

Java技术剑
22分钟前
6
0
java 多线程

线程声明周期 线程的五个状态:新建,就绪,运行,阻塞,死亡。 其中就绪和运行两个状态客户互相转换,但运行到阻塞,阻塞到就绪,只能单向转换。 刚new出的线程就是【新建】状态,调用start...

雷开你的门
23分钟前
7
0
构造器Constructor是否可被overrid

构造器不能被重写,不能用static修饰构造器,只能用public private protected这三个权限修饰符,且不能有返回语句。

无名氏的程序员
27分钟前
4
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部