Celery 的学习笔记--tornado异步开发的好朋友<二>

1.在tornado 中 使用 Celery

2.Celery的进阶


2.1回调

官方文档中把回调称为linking tasks。和回调差不多一个意思。这个回调怎么用呢,请看下面例子。

这个link就相当于tornado中的callback了

add.apply_async((2,2),link = add.s(16))

这个函数返回的值为20,这个20怎么来呢?

其实就是先执行第一个任务add(2,2) ,第一个任返回的结果传递给回调函数,然后add(4,16).最后就的好20了。这个例子很简单,

不过这个例子有个疑问—add.s(16),这个s是怎么回事?突然出现这个s,而且以前没有见过啊。

官网canvas guide里有说明的,这个咱们简单的学习一下。

>>>add.subtask((2, 2), countdown=10)
tasks.add(2, 2)

>>>add.s(2, 2)
tasks.add(2, 2)

add.s()就相当于subtask()方法,等于它的简写。


特殊变量

EAT(estimated time of arrival) 预计到达时间

result = add.apply_async((2, 2), countdown=3)
#我们通过countdown变量设置它
result.get()   
4

那么这个变量的作用是什么呢?我们可以给这个参数设定一个特殊的日期(date)或者时间(time),那么在这个时间内这个函数是不会返回结果的。上面那个例子代表我们至少需要等待3秒才能得到返回结果。


Message Sending Retry

celey将会在事件连接的失败时候自动重新连接,通过设置retry变量可以控制是否重新连接。比如retry=False表示连接失败后不重连。

不过还有更高级的配置

add.apply_async((2, 2), retry=True, retry_policy={
    'max_retries': 5,
    'interval_start': 0,
    'interval_step': 0.2,
    'interval_max': 0.8,
})
  • max_retries :最大重连次数,设为None表示无限次数的重连。
  • interval_start:第一次两次重连的等待时间,单位秒,默认为0
  • interval_max:重连登台时间 的最大值默认0.2
  • nterval_step:重连时间增量的步长,默认0.2

    刚才的例子里重连的间隔从0开始,每次增长0.2s,当间隔到带0.8的时候就不增长了。
    Serializers
    worker 返回来内容的格式。默认为pickle python有专门的包。
    不过我们可是设置 json,pickle,ymal,msgpack。

 add.apply_async((10, 10), serializer='json')

不过每调用一次都要设置它不是很麻烦么,我们可以定义celery设在它。这样就不必每次都设置了。
通过CELERY_TASK_PUBLISH_RETRY 就可以了。
所有的设这内容都在这里了


3.celery的配置(Configuration)


不过一般情况下我们不必对Celery进行配置哈,如果你有啥特殊的要求的话就需要了解这一方面了。

怎么配置


配置的格式(等号连接)

## Broker settings.
BROKER_URL = 'amqp://guest:guest@localhost:5672//'

# List of modules to import when celery starts.
CELERY_IMPORTS = ('myapp.tasks', )

## Using the database to store task state and results.
CELERY_RESULT_BACKEND = 'db+sqlite:///results.db'

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

配置单个条目

app.conf.CELERY_TASK_SERIALIZER = 'json'

要配置多个

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,
)

常用的配置选项


CELERY_RESULT_BACKEND
这里写图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值