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
link:任务成功执行后的回调方法;是一个signature对象;可以用作关联任务;
link_error: 任务失败后的回调方法,是一个signature对象;
3.app.send_task('task1.add1',args=[1,2])
没用过,不建议用,因为不会校验是否存在这个方法,直接就发送成功了,celery执行就会报错