2016-09-23重大失误,记一次celery失误

事件

23日晚公司app分发奖励,后台设置错误,导致23:00到23:22期间内,原本只分发一次的奖励,每分钟重复分发,多分发了21份奖励,导致损失10k余元。

分析

定时任务使用celery写的,第一个想到的是celerybeat没有重启,重启celerybeat之后,状况仍然存在,要炸。打开代码分析,找到原因。删除redis队列的信息,重启,ok。

原因

#代码
'daily-reward':
 {
    'task': 'running.tasks.daily_reward',
    'schedule': crontab(hour='23'),   
   'args': (),
},

原因出在schedule此时设置的是hour=23,会导致在23时每分钟都会重复任务。正确的写法是

  'schedule': crontab(minute=0, hour='23',

尾声

归根结底是自己对celery的掌握不够到位,导致这次损失,引以为戒,不说了,吃土去了。

你可能感兴趣的:(2016-09-23重大失误,记一次celery失误)