事件
23日晚公司app分發(fā)獎(jiǎng)勵(lì)滥嘴,后臺(tái)設(shè)置錯(cuò)誤木蹬,導(dǎo)致23:00到23:22期間內(nèi),原本只分發(fā)一次的獎(jiǎng)勵(lì)若皱,每分鐘重復(fù)分發(fā)镊叁,多分發(fā)了21份獎(jiǎng)勵(lì)尘颓,導(dǎo)致?lián)p失10k余元。
分析
定時(shí)任務(wù)使用celery寫的晦譬,第一個(gè)想到的是celerybeat沒有重啟疤苹,重啟celerybeat之后,狀況仍然存在蛔添,要炸痰催。打開代碼分析兜辞,找到原因迎瞧。刪除redis隊(duì)列的信息,重啟逸吵,ok凶硅。
原因
#代碼
'daily-reward':
{
'task': 'running.tasks.daily_reward',
'schedule': crontab(hour='23'),
'args': (),
},
原因出在schedule此時(shí)設(shè)置的是hour=23,會(huì)導(dǎo)致在23時(shí)每分鐘都會(huì)重復(fù)任務(wù)。正確的寫法是
'schedule': crontab(minute=0, hour='23',
尾聲
歸根結(jié)底是自己對(duì)celery的掌握不夠到位扫皱,導(dǎo)致這次損失足绅,引以為戒,不說(shuō)了韩脑,吃土去了氢妈。