Celery
文章平均质量分 92
libing_thinking
长风破浪会有时,直挂云帆济沧海
展开
-
Celery-4.1 用户指南: Task
任务是构建 celery 应用的基础块。任务是可以在任何除可调用对象外的地方创建的一个类。它扮演着双重角色,它定义了一个任务被调用时会发生什么(发送一个消息),以及一个工作单元获取到消息之后将会做什么。每个任务都有不同的名称,发给 celery 的任务消息中会引用这个名称,工作单元就是根据这个名称找到正确的执行函数。任务消息只有在被工作单元确认后才会从队列中删除。工作单元会预先保存许多翻译 2017-11-16 14:06:11 · 25276 阅读 · 1 评论 -
Celery-4.1 用户指南: Extensions and Bootsteps
自定义消息消费者你可能想要嵌入自定义的 Kombu 消费者来手动处理你的消息。为了达到这个目的,celery 提供了一个 ConsumerStep bootstep 类,你只需要定义 get_consumers 方法,它必须返回一个 kombu.Consumer 对象的列表,当连接建立时,这些对象将会启动。from celery import Celeryfrom celery import bo翻译 2017-11-24 15:41:13 · 1973 阅读 · 0 评论 -
Celery3 迁移到 celery4 遇到的问题
今天将老项目中的 celery3 更新到 celery4。出现了一些问题,这里做一个记录,方便以后查看。如果有人也遇到同样的问题,可以作为参考,少走弯路。更新最简单的更新方式当然是pip, ;)pip install -U celery==4.1.0遇到的问题kombu.exceptions.EncodeError: Object of type 'Message' is not JSON seri原创 2017-11-24 11:35:31 · 7743 阅读 · 2 评论 -
Celery-4.1 用户指南:Testing with Celery
任务与单元测试在单元测试中测试任务行为的推荐方法是用mocking。Eager mode: task_always_eager 设置启用的 eager 模式不适用于单元测试。当使用eager模式,你只是测试工作单元中发生的行为的一个模拟,而实际所发生的和模拟的有许多不同。Celery 任务就像一个web视图,它只定义在任务被调用的上下文环境中怎样执行操作。这意味着任务只处理如序列化、消息头、重试等翻译 2017-11-24 10:42:05 · 2125 阅读 · 0 评论 -
Celery-4.1 用户指南: Signals
基础有多种类型的事件可以触发信号,你可以连接到这些信号,使得在他们触发的时候执行操作。连接到 after_task_publish 信号的示例:from celery.signals import after_task_publish@after_task_publish.connectdef task_sent_handler(sender=None, headers=翻译 2017-11-23 18:10:13 · 4313 阅读 · 0 评论 -
Celery-4.1 用户指南: Concurrency
Release: 4.1 Date: 2017年8月18日使用 Eventlet 实现并发简介Eventlet 的主页对它进行了描述;它是一个python的并发网络库,可以让你更改如何运行你的代码而不是怎么编写代码。对高可扩展非阻塞IO操作,它使用 epoll或者libevent。Coroutines 使得开发者使用一个类似于线程的阻塞式编程风格,但是却能提供非阻塞IO的好处。事件的分发是隐翻译 2017-11-22 17:40:44 · 4000 阅读 · 0 评论 -
Celery-4.1 用户指南: Debugging
远程调试任务(pdb)基础celery.contrib.rdb 是 pdb 的一个扩展版本,它支持不通过终端访问就可以远程调试进程。示例:from celery import taskfrom celery.contrib import rdb@task()def add(x, y): result = x + y rdb.set_trace() # <- set break-翻译 2017-11-22 17:19:07 · 2746 阅读 · 0 评论 -
Celery-4.1 用户指南: Optimizing
简介默认的配置做了很多折中考虑。它不是针对某个情况优化的,但是大多数情况下都工作的非常好。基于一个特殊的使用场景,有很多优化可以做。优化可以应用到运行环境的不同属性,可以是任务执行的时间,使用的总内存数,或者是高负载时的响应时间。Ensuring操作在Programming Pearl这本书中,Jon Bentley 通过 一天有多少水从密西西比河流出? 这个问题提出了back-of-the-env翻译 2017-11-22 13:37:48 · 3618 阅读 · 0 评论 -
Celery-4.1 用户指南: Security
简介虽然Celery 编写的时候考虑了安全,但是它仍然应该认为是一个不安全的组件。依据安全策略,你可以采取几个步骤使得你的 Celery 安装更加安全。关注的领域消息中间件保障消息中间件不受不想要的访问是必须的,特别当它可以从外面访问时。默认情况下,工作单元确信他们从消息中间件后去的数据没有被篡改过。查看消息签名这一节获取更多如何使消息中间件连接更可信的信息。第翻译 2017-11-22 12:46:00 · 1119 阅读 · 0 评论 -
Celery-4.1 用户指南: Monitoring and Management Guide
简介Celery 提供了监控和探查celery集群的工具。这篇文档描述了一些工具,以及与监控相关的一些特性,例如事件和广播命令。工作单元命令行管理工具(inspect/control)Celery 可以用来探查和管理工作单元节点(以及一定程度上对任务管理)。列出所有可用的命令:$ celery help或者对指定的命令获取帮助:$ celery <command> --help命令shell: 进翻译 2017-11-21 15:10:08 · 5858 阅读 · 1 评论 -
Celery-4.1 用户指南: Routing Tasks
注意: 像主题和扇出之类的路由概念并不对所有传输介质都可用,请翻阅”传输比较表”。基础Automatic routing路由最简单的方式是使用 task_create_missing_queues 设置(默认启用)。使用这个设置,一个还没有在 task_queues 中定义的有名队列将会自动被创建。这使得进行简单的路由任务非常容易。假如你有两台服务器,x 和 y 处理常规任务,还有一台服务器 z,翻译 2017-11-20 22:49:17 · 5123 阅读 · 2 评论 -
Celery-4.1 用户指南: Application
ApplicationCelery 库在使用之前必须初始化,一个celery实例被称为一个应用(或者缩写 app)。Celery 应用是线程安全的,所以多个不同配置、不同组件、不同任务的 应用可以在一个进程空间里共存。下面创建一个 celery 应用:>>> from celery import Celery>>> app = Celery()>>> app<Celery __main__:0翻译 2017-11-15 18:42:06 · 11155 阅读 · 2 评论 -
Celery-4.1 用户指南: Periodic Tasks
简介celery beat 是一个调度器;它以常规的时间间隔开启任务,任务将会在集群中的可用节点上运行。默认情况下,入口项是从 beat_schedule 设置中获取,但是自定义的存储也可以使用,例如在 SQL 数据库中存储入口项。你必须保证一个调度一次只被一个调度器运行,否则将会形成重复任务。使用中央集权的方式意味着调度不需要被同步,并且服务可以在没有锁的情况下操作。时区默认情况下,周期性任务使用翻译 2017-11-21 11:00:21 · 7360 阅读 · 0 评论 -
Celery-4.1 用户指南: Daemonization
Generic init-scripts查看Celery发布里的 extra/generic-init.d/ 文件夹。这个文件夹中包含了celery worker 程序的通用bash初始化脚本,可以运行在 Linux, FreeBSD, OpenBSD, 以及其他类Unix平台。Init-script: celerydUsage: /etc/init.d/celeryd {start|stop|r翻译 2017-11-20 15:15:51 · 4471 阅读 · 0 评论 -
Celery-4.1 用户指南: Workers Guide
启动工作单元停止工作单元重启工作单元处理信号文件路径中的变量并行远程控制命令时间限制速率限制每个孩子的最大任务数每个孩子的最大内存自动扩展队列探查工作单元附加命令编写自己的远程控制命令翻译 2017-11-20 11:08:20 · 5806 阅读 · 0 评论 -
Celery-4.1 用户指南: Canvas-设计工作流
签名PartialsImmutabilityCallbacks原语ChainsGroupsChordsMap & StarmapChunks翻译 2017-11-18 20:44:44 · 5440 阅读 · 0 评论 -
Celery 浅析
Celery 是用python实现的一个分布式的任务处理系统,对于需要高可用异步处理的系统来说是它一个不错的选择。本来想实现一个分布式任务处理系统,当看到celery后感觉没有必要再自己写,需要的功能都已经实现,系统的各方面都考虑的比较周全,官方文档也很完善,而且社区活跃度也很高,据官网描述已经有一些公司在生产环境应用。本文对 celery 的基础知识进行一个简单介绍。主要组件broker 消息原创 2017-11-14 13:42:01 · 1371 阅读 · 1 评论 -
Celery-4.1 用户指南: Calling Tasks
基础本文档描述 Celery 中任务实例和 Canvas 使用的统一 “Calling API”。API 中定义了一个执行选项的标准集,以及三个方法: - apply_async(args[, kwargs[, ...]]) 发送任务消息 - delay(*args, **kwargs) 发送任务消息的简写,不支持执行选项 - calling(__call__) 直接调用任务对象,意味着翻译 2017-11-17 17:35:45 · 10613 阅读 · 0 评论 -
Celery-4.1 用户指南: Configuration and defaults
这篇文档描述了可用的配置选项。如果你使用默认的加载器,你必须创建 celeryconfig.py 模块并且保证它在python路径中。配置文件示例以下是配置示例,你可以从这个开始。它包括运行一个基本Celery应用的所有基础设置。## Broker settings.broker_url = 'amqp://guest:guest@localhost:5672//'# List of module翻译 2017-12-15 14:47:43 · 8767 阅读 · 2 评论