文档章节

#sora#celery笔记——call the task

Hochikong
 Hochikong
发布于 2015/04/26 14:45
字数 613
阅读 1034
收藏 3

基本的两种task调用方式:

apply_async()和delay(),前者要把参数放在元组或字典中,后者直接使用参数


快速参考:


T.delay(arg, kwarg=value)

always a shortcut to .apply_async.


T.apply_async((arg, ), {'kwarg': value})


T.apply_async(countdown=10)

executes 10 seconds from now.


T.apply_async(eta=now + timedelta(seconds=10))

executes 10 seconds from now, specifed using eta


T.apply_async(countdown=60, expires=120)

executes in one minute from now, but expires after 2 minutes.


T.apply_async(expires=now + timedelta(days=2))

expires in 2 days, set using datetime.


例子:

task.delay(arg1, arg2, kwarg1='x', kwarg2='y')

task.apply_async(args=[arg1, arg2], kwargs={'kwarg1': 'x', 'kwarg2': 'y'})


其他的特性:


##任务延时(设置countdown参数)##

>>> result = add.apply_async((2, 2), countdown=3)

>>> result.get()    # this takes at least 3 seconds to return

20


##任务过期(设置expires参数)##

>>> # Task expires after one minute from now.

>>> add.apply_async((10, 10), expires=60)

When a worker receives an expired task it will mark the task as REVOKED



##任务重试(设置retry参数)##

add.apply_async((2, 2), retry=True, retry_policy={

    'max_retries': 3,

    'interval_start': 0,

    'interval_step': 0.2,

    'interval_max': 0.2,

})


。Retry Policy


A retry policy is a mapping that controls how retries behave, and can contain the following keys:


。max_retries


Maximum number of retries before giving up, in this case the exception that caused the retry to fail will be raised.


A value of 0 or None means it will retry forever.


The default is to retry 3 times.


。interval_start


Defines the number of seconds (float or integer) to wait between retries. Default is 0, which means the first retry will be instantaneous.


。interval_step


On each consecutive retry this number will be added to the retry delay (float or integer). Default is 0.2.


。interval_max


Maximum number of seconds (float or integer) to wait between retries. Default is 0.2.



##序列化工具(设置serializer参数)##

有几种可用的序列化工具:JSON,pickle,YAML,msgpack

JSON虽然不错,但是对于传输二进制数据有点无力,因为基于Base64编码,数据体积变大,而且可用的数据格式有限

pickle适用于无需支持其他语言开发的组件的情况,传输二进制文件更轻量级和快速

YAML对跨语言的兼容性不错,支持更多的数据格式。但是处理它的python模块比较慢

msgpack是一种新的交换格式,功能类似JSON,不过还是too young


序列化工具的配置优先级如下

1、The serializer execution option.

2、The Task.serializer attribute

3、The CELERY_TASK_SERIALIZER setting.


e.g >>> add.apply_async((10, 10), serializer='json')



##压缩工具(设置compression)##

如果发送的消息比较大,可以考虑压缩消息

e.g >>> add.apply_async((2, 2), compression='zlib')


##不同的消息队列#

e.g add.apply_async(queue='priority.high')

e.g $ celery -A proj worker -l info -Q celery,priority.high


高级参数:

。exchange


Name of exchange (or a kombu.entity.Exchange) to send the message to.


。routing_key


Routing key used to determine.


。priority


A number between 0 and 9, where 0 is the highest priority.


Supported by: redis, beanstalk



© 著作权归作者所有

下一篇: #sora#实验2
Hochikong
粉丝 19
博文 113
码字总数 59961
作品 1
广州
程序员
私信 提问
#SORA#celery研究笔记

最近看到celery文档task部分,做一下小结 实际处理时,我们可以使用一个类似于logging的模块生成日志。 对于某些任务,你可以设置当满足某些条件时,重试任务、拒绝任务或忽略任务 在定义tas...

Hochikong
2015/04/12
563
0
#sora#celery worker guide abstract

celery worker guide abstract 启动worker: e.g. celery -A proj worker -l info celery -A proj worker --loglevel=INFO --concurrency=10 -n worker1.%h 备注: The hostname argument ca......

Hochikong
2015/05/17
182
0
Docker SwarmMode笔记

swarm基本概念 Swarm是去中心化的,并集成进了Docker Engine,通过Docker CLI管理。 集群包含两类节点 —— 负责调度Task(不推荐超过7个,其有两种状态:leader、reachable,集群操作需在管...

麦拂沙
2017/04/04
87
0
#SORA#celery实践1

这次研究celery的Next Step部分。 先创建一个python module: mkdir projcd projtouch init.py 在proj目录中创建celery.py: from future import absolute_importfrom celery import Celerya......

Hochikong
2015/04/04
362
0
笔记二:ansible批量设置主机名

更新时间: 2017-2-27 在/etc/ansible/hosts配置主机信息(主机名需先在hosts设置好) 2.修改主机名playbook 3. 执行playbook 4. 查看被管理机的主机名 有不对请指出,多多指教。qq:2632886623...

ONG_赵佳
2018/06/28
0
0

没有更多内容

加载失败,请刷新页面

加载更多

计算机实现原理专题--二进制减法器(二)

在计算机实现原理专题--二进制减法器(一)中说明了基本原理,现准备说明如何来实现。 首先第一步255-b运算相当于对b进行按位取反,因此可将8个非门组成如下图的形式: 由于每次做减法时,我...

FAT_mt
昨天
6
0
好程序员大数据学习路线分享函数+map映射+元祖

好程序员大数据学习路线分享函数+map映射+元祖,大数据各个平台上的语言实现 hadoop 由java实现,2003年至今,三大块:数据处理,数据存储,数据计算 存储: hbase --> 数据成表 处理: hive --> 数...

好程序员官方
昨天
7
0
tabel 中含有复选框的列 数据理解

1、el-ui中实现某一列为复选框 实现多选非常简单: 手动添加一个el-table-column,设type属性为selction即可; 2、@selection-change事件:选项发生勾选状态变化时触发该事件 <el-table @sel...

everthing
昨天
6
0
【技术分享】TestFlight测试的流程文档

上架基本需求资料 1、苹果开发者账号(如还没账号先申请-苹果开发者账号申请教程) 2、开发好的APP 通过本篇教程,可以学习到ios证书申请和打包ipa上传到appstoreconnect.apple.com进行TestF...

qtb999
昨天
10
0
再见 Spring Boot 1.X,Spring Boot 2.X 走向舞台中心

2019年8月6日,Spring 官方在其博客宣布,Spring Boot 1.x 停止维护,Spring Boot 1.x 生命周期正式结束。 其实早在2018年7月30号,Spring 官方就已经在博客进行过预告,Spring Boot 1.X 将维...

Java技术剑
昨天
18
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部