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

事件 【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的掌握不够到位,导致这次损失,引以为戒,不说了,吃土去了。

    推荐阅读