celery

作者: 不咸的Yan | 来源:发表于2019-08-16 08:50 被阅读0次
  • celery

http://www.pianshen.com/article/2176289575/

异步任务的调用方法:
1.result = add.delay(1, 2):这是apply_async方法的别名,但接受的参数较为简单;
2.result = add.apply_async(args=[1, 2], kwargs={'countdown':5, 'expires':60})
3.result = celeryapp.send_task('task.add', args=[1, 2]):可以发送未被注册的异步任务,即没有被celery.task装饰的任务;

apply_async 可以传递更多的参数,
eg:
countdown=5:等待5S后再执行, eta=now+tiedelta(second=20):指定任务的开始时间, expires=60:指定任务的超时时间,
retry=True: 指定任务失败后是否重试

result.ready() 查看任务状态,返回布尔值, 任务执行完成, 返回 True, 否则返回 False.
result.get(timeout=5) 获取任务执行结果,可以设置等待时间
result.state # 查看任务当前的状态,
PENDING:任务等待中,
STARTED:任务已开始,
SUCCESS:任务执行成功,
FAILURE:任务执行失败,
RETRY: 任务将被重新执行,
REVOKED:任务取消,
PROCESS:任务执行中
result.traceback # 如果任务抛出异常, 可以获取完整的堆栈信息

任务的执行结果
执行结果保存到redis1号库, 在1号库会有类似下面格式的键, 其对应的值就是执行结果了.
键: celery-task-meta-080ee8b0-24c4-48a0-a2dd-a1bcebb45b5b
值: {
"status": "SUCCESS",
"result": 30,
"traceback": null,
"children": [],
"task_id": 080ee8b0-24c4-48a0-a2dd-a1bcebb45b5b
}

定时任务

from celery.schedule import crontab

crontab对象指定精确时间, 默认参数值都为'*' 意为每分钟都执行
这里指的是早上8点30



今天踩得坑是 在windows中,celery的定时任务不好使, 在linux环境下就没问题了, 不知道啥原因, 系统问题吧. 以后还是多用linux吧.

相关文章

网友评论

      本文标题:celery

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