2019独角兽企业重金招聘Python工程师标准>>>

基本的两种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

转载于:https://my.oschina.net/hochikong/blog/406472

#sora#celery笔记——call the task相关推荐

  1. #SORA#celery研究笔记

    2019独角兽企业重金招聘Python工程师标准>>> 最近看到celery文档task部分,做一下小结 实际处理时,我们可以使用一个类似于logging的模块生成日志. 对于某些任 ...

  2. #SORA#celery实践1

    2019独角兽企业重金招聘Python工程师标准>>> 这次研究celery的Next Step部分. 先创建一个python module: mkdir proj cd proj ...

  3. celery源码分析-Task的初始化与发送任务

    celery源码分析 本文环境python3.5.2,celery4.0.2,django1.10.x系列 celery的任务发送 在Django项目中使用了装饰器来包装待执行任务, from cel ...

  4. #sora#celery worker guide abstract

    2019独角兽企业重金招聘Python工程师标准>>> celery worker guide abstract 启动worker: e.g. celery -A proj work ...

  5. #SORA#celery原生配置文件研究

    2019独角兽企业重金招聘Python工程师标准>>> ps:百度是xxx的走狗 回到正题,今天研究了下用一个py文件作为celery的配置文件,所以,还是参考昨天的例子:http: ...

  6. 安卓笔记:修正Task ‘wrapper‘ not found in project

    今天在学校的电脑上创建了新的Module, 回到家 git 获取代码后, gradle 编译的时候居然提示异常: Task 'wrapper' not found in project 'XXXX' ...

  7. 【深度学习】李宏毅2021/2022春深度学习课程笔记 - Deep Learning Task Tips

    文章目录 一.深度学习步骤回顾 二.常规指导 三.训练过程中Loss很大 3.1 原因1:模型过于简单 3.2 原因2:优化得不好 3.3 原因1 or 原因2 ? 四.训练过程Loss小.测试过程L ...

  8. 论文笔记《Modeling Task Relationships in Multi-task Learning with Multi-gate Mixture-of-Experts》

    论文链接 MMoE 1.摘要 基于神经网络的多任务学习已经在实际场景如推荐系统中有了大规模应用,例如在电影推荐中,除了要给用户推荐他们可能购买或者观看的电影,还要考虑用户后续对这部电影的评价.通过多任 ...

  9. Using Celery With Django for Background Task Processing

    用芹菜配合Django处理背景任务 Web应用程序通常一开始很简单,但可能变得相当复杂,而且大多数应用程序很快就超出了只响应HTTP请求的责任. 当发生这种情况时,必须区分必须立即发生的(通常是在HT ...

最新文章

  1. 23种设计模式的基本介绍
  2. 图像热点(图像地图)
  3. JavaScript 如何使用闭包
  4. w ndows8怎么连接网络,(Wndows8.1优化设置全面解析.doc
  5. 监控程序崩溃重启_第十四章 Homeassistant服务器安全及状态监控(下)
  6. Colidity--GenomicRangeQuery
  7. javaweb学习总结(二十九)——EL表达式
  8. java活动安排_贪心法求解活动安排(java实现)
  9. 英雄联盟更新服务器维护,lol更新维护
  10. 大幅面多相机高精度定位及测量解决方案
  11. ansible最大并发_通过这7种方法来最大程度地提高Ansible技能
  12. 详解javascript的bind方法
  13. 【自然框架】——重开在线演示
  14. PHP 使用header函数设置HTTP头的示例方法 表头(转)
  15. 开课吧:深入了解C++语言应用方向有哪些?
  16. 微信小程序官方demo下载地址
  17. 最新Keil MDK 5.37下载
  18. QPainter绘制方法
  19. html日志网页,以HTML为表现的日志记录组件
  20. 另一个伊甸专武,国际服用(手机随便做的,有点粗糙,见谅

热门文章

  1. 吐槽支付宝红包:逼公鸡下蛋的后果
  2. AliSSR 语音超分算法:让在线会议语音更明亮更自然
  3. 基于stm32f103c8t6与手机蓝牙控制LED
  4. 机器学习笔记day01
  5. 西工大机考《 网络安全》大作业网考
  6. Unity 报错TLS Allocator ALLOC_TEMP_THREAD, underlying allocator ALLOC_TEMP_THREAD
  7. 开源智慧党建小程序源码系统+搭建教程
  8. android控件ListView设置onClick事件
  9. C++ ID3决策树
  10. StringBuilder后加换行符