并行Python框架Celery的配置方法

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
[email protected]: OK
    new rate limit set successfully

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

时间: 2024-08-24 06:42:07

并行Python框架Celery的配置方法的相关文章

Python 并行分布式框架 Celery

Celery 简介 除了redis,还可以使用另外一个神器---Celery.Celery是一个异步任务的调度工具. Celery 是 Distributed Task Queue,分布式任务队列,分布式决定了可以有多个 worker 的存在,队列表示其是异步操作,即存在一个产生任务提出需求的工头,和一群等着被分配工作的码农. 在 Python 中定义 Celery 的时候,我们要引入 Broker,中文翻译过来就是"中间人"的意思,在这里 Broker 起到一个中间人的角色.在工头提

【转】Python 并行分布式框架 Celery

原文链接:https://blog.csdn.net/freeking101/article/details/74707619 Celery 官网:http://www.celeryproject.org/ Celery 官方文档英文版:http://docs.celeryproject.org/en/latest/index.html Celery 官方文档中文版:http://docs.jinkan.org/docs/celery/ celery配置:http://docs.jinkan.o

Sublime Text 3 python和Package Control配置方法

(如果下面的方法试了Packages control功能还是不能用参考这个方法: 1.直接把C:\Sublime Text 3x64\Data\Packages\   目录下原有的Packages control文件夹删了 2.手动下载Packages control插件:https://packagecontrol.io/Package%20Control.sublime-package 3.把下载好的插件负责到C:\Sublime Text 3x64\Data\Installed Packa

构建python框架的方法与步骤

为什么你想要自己构建一个 web 框架呢?我想,原因有以下几点: 你有一个新奇的想法,觉得将会取代其他的框架 你想要获得一些名气 你遇到的问题很独特,以至于现有的框架不太合适 你对 web 框架是如何工作的很感兴趣,因为你想要成为一位更好的 web 开发者. 接下来的笔墨将着重于最后一点.这篇文章旨在通过对设计和实现过程一步一步的阐述告诉读者,我在完成一个小型的服务器和框架之后学到了什么.你可以在这个 代码仓库 中找到这个项目的完整代码. 我希望这篇文章可以鼓励更多的人来尝试,因为这确实很有趣.

可以进行自动补全的python的eclipse配置方法

/*********************************************************************  * Author  : Samson  * Date    : 05/21/2014  * Test platform:  *              Mint 15-3.8.13.13  *              GNU bash, version 4.2.45  * ***************************************

hibernate框架在eclipse下的配置方法(一)

一.ORM O:object 对象 R:Realtion 关系(关系型数据库) M:Mapping 映射 ORM:对象关系型映射 目前流行的编程语言,如Java.C# ,它们都是面向对象的编程语言,而目前主流的数据库产品例如Oracle.DB2等,依然是关系型数据库.编程语言和底层数据库发展的不协调(阻抗不匹配,例如数据库中无法直接实现存储继承.多态.封装等特征和行为),催生出了ORM框架.ORM框架可以作为面向对象语言和关系型数据库之间的桥梁. 二.Hibernate Hibernate是一个

Celery框架的基本使用方法

一. Celery简介 Celery是一个简单.灵活且可靠的,处理大量消息的分布式系统,专注于实时处理的异步任务队列,同时也支持任务调度. Celery的架构由三部分组成,消息中间件(message broker),任务执行单元(worker)和任务执行结果存储(task result store)组成. 消息中间件:Celery本身不提供消息服务,但是可以方便的和第三方提供的消息中间件集成.包括,RabbitMQ, Redis等等. 任务执行单元:Worker是Celery提供的任务执行的单元

Spring框架bean的配置(2):SpEL:引用 Bean、属性和方法。。。

1.SpEL,实现 Person类,其属性如下,其get,set,tostrong方法就不写了 private String name; private Car car; private String city;//city属性是引用了Address中city的属性 private String info;//根据car的price属性来确定info,price大于30万,不大于30万 car类,其属性如下,set,get,tostring方法就不写了 private String brand;

【理论】python使用celery异步处理请求

Flask中使用celery队列处理执行时间较长的请求. 一. 安装celery pip install celery flask redis 二. celery简介 Celery是个异步分布式任务队列 通过Celery在后台跑任务并不像线程那么简单,但是用Celery的话,能够是应用有较好的扩展性,因为Celery是个分布式架构,下面介绍Celery的三个核心组件: 1. 生产者(Celery client): 生产者发送消息,在Flask上工作时,生产者在Flask应用内运行 2. 消费者(