ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

如何获取Celery任务的执行结果?

2021-04-05 11:52:33  阅读:304  来源: 互联网

标签:celery 结果 redis django Celery 获取 任务 执行


本篇是Celery+django如何显示任务的执行进度条兄弟篇,上篇限于篇幅,留了个尾巴没说,就是后台celery执行的任务结果如何我们获取,最终成没成功,执行的结果是什么,不成功的话有什么报错,这些信息对我们还是非常有用的,因为这关乎任务要不要再次执行的问题,且不说显示不显示进度条,最终完成了总要给给交代对吧,关于每个任务执行的结果,celery其实已经为我们做好了,我们只需要使用就好,就像上一篇我说的,在python的世界,一切都变得easy了,那这篇就来说一下如何获取每个任务的执行结果和最终是否完成的状态。

 要获取每个任务的执行结果,其实就是配置下celery的参数就可以,我们拿redis来说,redis既可以做为broker,也可以做为任务执行结果存储功能,在我们settings.py文件中加入:

CELERY_RESULT_BACKEND = 'redis://106.13.57.10:6379'

就这么简单的一行就可以了,这样每个任务的执行结果都会保存到redis里,保存的形式是以任务id做为key, value就是任务执行的结果和状态,在这里我要说一下,这里是展示的最终状态,也就是说任务执行完毕,这里才有这个key,没执行完的任务是没有key的,那要怎么获取任务信息呢,一般来说由前端定期发送一个ajax请求 ,如果请求有值就说明任务已经完成,把请求的数据解析显示到前端页面上即可,如果没有值那就说明还没执行完,间隔几秒后再执行。

 以上就是采用redis来存储结果的方式,但有时候我们就想存储到数据库中,通过orm方式来获取最终的数据,这个也是可以的,那下面我们就来说如何把结果存储到数据库中,其实方式大同小异,思路基本一样,不过我们要先安装一个第三方包:

pip install django-celery-results

安装完毕在settings.py文件,INSTALLED_APPS中加入:

'django_celery_results',

然后数据库迁移:

python manage.py makemigrationspython manage.py migrate

运行完会新建一个表:

django_celery_results_taskresult

因为这次是存储到db中,所以上面的配置要改一下:

CELERY_RESULT_BACKEND = 'django-db'

指定后端是django-db, 这样就配置完了,再次运行celery任务,结果就会存到数据库中了,但内容是一样的,类似如下:

图片

图截取了一部分,字段内容还有很多,还有执行时间、支持子任务等等。

以上就是所有内容了,欢迎大家留言沟通。


标签:celery,结果,redis,django,Celery,获取,任务,执行
来源: https://blog.51cto.com/15127521/2685573

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有