美文网首页
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