纯粹是记录一下自己在刚开始使用的时候遇到的一些坑,以及自己是怎样通过配合redis来解决问题的。
文章分为三个部分,一是怎样跑起来,并且怎样监控相关的队列和任务;二是遇到的几个坑;三是给一些自己配合redis使用的代码示例。
一.celery使用:
Ⅰ.把任务中间件服务器跑起来,rabbitmq-server
跑起来以后,就能在浏览器(http://localhost:15672/#/queues)里面看中间件里面的相关内容了。
(如果想把这边的某些队列下面的没有跑完的任务丢弃掉的话,进对应的队列,点击delete)
Ⅱ.在终端里面对应路径下面把celery的任务队列跑起来:
eg:celery -A celery_autowork_task worker --loglevel=info -Q auto_work
注意里面的各个参数的意义
Ⅲ.看具体的每个任务的执行情况,是否成功之类的
1.安装flower,pip3 install flower
2.用celery把flower跑起来celery flower
3.http://localhost:5555在这个链接,或者终端里面看见的就能看具体的每个任务的执行情况
二.坑:
Ⅰ.异常场景:并发数设置成4,然后第一次进去队列的时候是用的第一个,retry的时候,居然在4和2里面都触发了任务。也就是关了一个,开了两个。
异常原因:在exception的代码段里面加了retry功能, 然后在try的代码段里面也加了try功能,但是查看retry函数本身的定义,发现它的类型就是exception;