关于celery的retry

 关于的retry的使用方法等详细信息,参考:http://www.voidcn.com/blog/happyAnger6/article/p-6015436.html

此处主要记录自己在实践的一些弯路。

1.self.requests.reties的属性值的含义和变化

1. 当开始执行任务的时候,self.requests.reties被设置为0,说明任务开始执行。

2. 当内部调用self.retry()来进行重试时,同一个request会被同一个worker再次执行。这时,self.request.reties变为1.

总结来说,task开始执行时,self.request.reties的下标为0,第n尝试时,self.request.reties的下标为n。

注意: 虽然self.request.reties的下标从0开始,但是他的最大可达到的值是最大尝试次数,而非最大尝试次数-1

2. self.retry()相当于一个return,它之后的代码都不会被执行到。

       注意:try: except: finally:的finally比较特殊,不管try和except模块里面发生了什么(即便是except里面抛出错误或者return值),finally都会执行。

 

posted @ 2017-07-10 16:24  junna  阅读(458)  评论(0)    收藏  举报