美文网首页
CELERY 相关函数介绍

CELERY 相关函数介绍

作者: MoonMonsterss | 来源:发表于2018-10-21 19:05 被阅读71次

AysncResult类的函数

r = xxx.delay()返回的对象 r 是AsyncResult的实例

ready()

查看任务状态,返回布尔值,任务执行完成,返回True,否则返回False

wait()

等待任务完成,返回任务执行结果,很少使用

get(timeout=1)

获取任务的执行结果,可以设置等待时间

result属性

任务的执行结果

r.state r.status

PENDING,START,SUCCESS,任务的当前状态

successful

任务成功返回True

traceback

如果任务抛出了一个异常,可以获取原始的回溯信息

celery的装饰函数task

from celery import task
@task()
def xxx():
    pass
task()

可以将任务装饰为异步。
参数:
<b>name</b>:可以显示指定任务的名字
<b>serializer</b>:指定序列化的方法
<b>bind</b>:一个bool值,设置是否绑定一个task的实例,如果绑定,task会作为参数传递到函数中,可以访问到task实例的所有属性

@task(bind=True)
def add(self, x, y): # self就是task的实例。
    print(self.request.id)

<base>:定义任务的基类,可以用来定义回调函数

import celery

class MyTask(celery.Task):
    def on_failure(self, exc, task_id, args, kwargs, einfo):
        """
        任务失败时执行
        """

    def on_success(self, retval, task_id, args, kwargs):
        """
        任务成功时执行
        """

    def on_retry(self, exc, task_id, args, kwargs, einfo):
        """
        任务重试时执行
        """

@celery.task(base=MyTask)
def div(x, y=0):
    return x / y

参数介绍:
<b>exc</b>:失败时的错误类型
<b>task_id</b>:任务的id
<b>args</b>:任务函数的参数
<b>kwargs</b>:关键字参数
<b>einfo</b>:失败时的异常详细信息
<b>retval</b>:任务成功执行的返回值

调用异步任务的函数:

xxx.delay()

是apply_async的快捷函数,接收的参数较为简单

xxx.apply_async(args=[], kwargs={})

使用被app.task装饰的函数调用后,可以传入详细的参数。

send_task()
from celery import Celery
app = Celery()
app.send_task()

可以发送未被注册的异步任务,也就是没有被celery.task装饰的函数

app.send_task('task.add',args=[3,4])

参数基本和apply_async一样,但是send_task在发送时不会检查函数(task.add)是否存在,即使为空也会发送成功。

apply_async() | send_task()的函数:

<b>countdown</b>:设置该任务等待一段时间后再执行,单位为s
<b>eta</b>:定义任务开始的时间,eta = time.time() + 10
<b>expires</b>:设置任务时间,如果在任务时间内没有完成就抛弃
<b>retry</b>:如果任务失败后,是否重试,默认是True
<b>shadow</b>:重新指定任务的名字,覆盖在日志中的使用的名称
<b>try_policy</b>:重试策略

  • max_retries:最大重试数,默认为3
  • interval_start:重试等待的时间间隔秒数,默认是0,表示直接重试不等待
  • interval_step:每次重试让重试间隔增加的秒数,可以是浮点数,默认是0.2
  • interval_max:重试间隔最大的秒数,即step增加到多大后就不再增加了,默认是0.2
add.apply_async((2, 2), retry=True, retry_policy={
    'max_retries': 3,
    'interval_start': 0,
    'interval_step': 0.2,
    'interval_max': 0.2,
})

<b>routing_key</b>:自定义路由键
<b>queue</b>:指定发送到哪个队列
<b>exchange</b>:指定发送到哪个交换机
<b>priority</b>:任务队列的优先级,0-9之间
<b>serializer</b>:任务序列化方法,通常不需要设置
<b>compression</b>:压缩方案,有zlib,bzip2等
<b>headers</b>:为任务添加额外的消息
<b>link</b>:任务成功执行后的回调函数,是一个signature对象,可以用来关联任务
<b>link_error</b>:任务失败后的回调函数

参考:

https://www.cnblogs.com/cwp-bg/p/8759638.html

相关文章

网友评论

      本文标题:CELERY 相关函数介绍

      本文链接:https://www.haomeiwen.com/subject/fsxizftx.html