• 调用异步任务

1.task.delay():这是apply_async方法的别名,但接受的参数较为简单;

2.task.apply_async(args=[arg1, arg2], kwargs={key:value, key:value}):可以接受复杂的参数

  • 如:subs.apply_async(args=[1,8],kwargs={'name':'hallen'})

  • # 其他参数

    task_id:为任务分配唯一id,默认是uuid;

    countdown : 设置该任务等待一段时间再执行,单位为秒;

    eta : 定义任务的开始时间;eta=time.time()+10,单位为秒;

    expires : 设置任务时间,任务在过期时间后还没有执行则被丢弃,单位为秒

    retry : 如果任务失败后, 是否重试;使用true或false,默认为true

    shadow:重新指定任务的名字,覆盖其在日志中使用的任务名称;

    retry_policy : {},重试策略.如下:

    • max_retries : 最大重试次数, 默认为 3 次.

    • interval_start : 重试等待的时间间隔秒数, 默认为 0 , 表示直接重试不等待.

    • interval_step : 每次重试让重试间隔增加的秒数, 可以是数字或浮点数, 默认为 0.2

    • interval_max : 重试间隔最大的秒数, 即 通过 interval_step 增大到多少秒之后, 就不在增加了, 可以是数字或者浮点数, 默认为 0.2 .

    routing_key:自定义路由键;

    queue:指定发送到哪个队列;

    exchange:指定发送到哪个交换机;

    priority:任务队列的优先级,0到255之间,对于rabbitmq来说0是最高优先级;

    serializer:任务序列化方法;通常不设置;

    compression:压缩方案,通常有zlib, bzip2

    headers:为任务添加额外的消息;

    link:任务成功执行后的回调方法;是一个signature对象;可以用作关联任务;

    link_error: 任务失败后的回调方法,是一个signature对象;

3.app.send_task('task1.add1',args=[1,2])

  • 没用过,不建议用,因为不会校验是否存在这个方法,直接就发送成功了,celery执行就会报错