django task項目執(zhí)行job邏輯梳理

最近項目中遇到了定時任務(wù),django的框架,用到了celery,mysql作為數(shù)據(jù)庫存儲job數(shù)據(jù),rabbit MQ作為消息隊列,還有oslo.service等openstack組件,現(xiàn)總結(jié)下

  1. 首先在task_manager_api項目中,創(chuàng)建任務(wù)時,create_update_trigger是在數(shù)據(jù)庫celery_period_task表中插入一條數(shù)據(jù)
  1. 然后在task_manager項目中scheduler/manager.py
    通過添加裝飾器@periodic_task.periodic_task產(chǎn)生一個周期任務(wù),spacing表示周期運行任務(wù)時間間隔
    schedule_task函數(shù)實現(xiàn)的是從數(shù)據(jù)庫表中獲取數(shù)據(jù),然后調(diào)celery.send_task函數(shù),發(fā)送任務(wù)
from oslo_service import periodic_task
@periodic_task.periodic_task(spacing=CONF.scheduler_task_interval)
  def schedule_task():
    jobs = objects.job.JobList.get_all_with_status(context,
                                                       [contants.PENDING,
                                                        contants.RUNNING])
        for job in jobs:
            self.schedule_job(context, job.uuid, job=job)
        # self.schedule_job中是self.app.send_task
        #send_task可以發(fā)送未被注冊的異步任務(wù),沒有被celery.task裝飾的任務(wù)
  1. 大概研究了一下裝飾器periodic_task,在oslo_service/periodic_task.py中,
    def periodic_task 主要作用是增加一個屬性f._periodic_task = True,在_PeriodicTasksMeta元類中,會判斷函數(shù)是否有這個屬性,如果有的話,會加入到_periodic_tasks列表中
class _PeriodicTasksMeta(type):
    def _add_periodic_task(cls, task):
       ....
        cls._periodic_tasks.append((name, task))
    
        return True

    def __init__(cls, names, bases, dict_):
        """Metaclass that allows us to collect decorated periodic tasks."""
        super(_PeriodicTasksMeta, cls).__init__(names, bases, dict_)
        ...
        for value in cls.__dict__.values():
            if getattr(value, '_periodic_task', False):
                cls._add_periodic_task(value)


@six.add_metaclass(_PeriodicTasksMeta)
class PeriodicTasks(object):    

  def run_periodic_tasks(self, context, raise_on_error=False):
        """Tasks to be run at a periodic interval."""
        idle_for = DEFAULT_INTERVAL
        for task_name, task in self._periodic_tasks:
            ....
            try:
                 task(self, context)
  1. run_periodic_tasks函數(shù)是task_manager/service.py
    Service類中的start函數(shù)中被觸發(fā)
periodic = loopingcall.FixedIntervalLoopingCall(
                self.periodic_tasks)

loopingcall是查看task是否執(zhí)行完成

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末诀紊,一起剝皮案震驚了整個濱河市滞乙,隨后出現(xiàn)的幾起案子伙菜,更是在濱河造成了極大的恐慌,老刑警劉巖捺信,帶你破解...
    沈念sama閱讀 206,378評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異龟再,居然都是意外死亡呀洲,警方通過查閱死者的電腦和手機(jī)印衔,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,356評論 2 382
  • 文/潘曉璐 我一進(jìn)店門啡捶,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人奸焙,你說我怎么就攤上這事瞎暑。” “怎么了与帆?”我有些...
    開封第一講書人閱讀 152,702評論 0 342
  • 文/不壞的土叔 我叫張陵了赌,是天一觀的道長。 經(jīng)常有香客問我玄糟,道長勿她,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 55,259評論 1 279
  • 正文 為了忘掉前任茶凳,我火速辦了婚禮嫂拴,結(jié)果婚禮上播揪,老公的妹妹穿的比我還像新娘贮喧。我一直安慰自己,他們只是感情好猪狈,可當(dāng)我...
    茶點故事閱讀 64,263評論 5 371
  • 文/花漫 我一把揭開白布箱沦。 她就那樣靜靜地躺著,像睡著了一般雇庙。 火紅的嫁衣襯著肌膚如雪谓形。 梳的紋絲不亂的頭發(fā)上灶伊,一...
    開封第一講書人閱讀 49,036評論 1 285
  • 那天,我揣著相機(jī)與錄音寒跳,去河邊找鬼聘萨。 笑死,一個胖子當(dāng)著我的面吹牛童太,可吹牛的內(nèi)容都是我干的米辐。 我是一名探鬼主播,決...
    沈念sama閱讀 38,349評論 3 400
  • 文/蒼蘭香墨 我猛地睜開眼书释,長吁一口氣:“原來是場噩夢啊……” “哼翘贮!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起爆惧,我...
    開封第一講書人閱讀 36,979評論 0 259
  • 序言:老撾萬榮一對情侶失蹤狸页,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后扯再,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體芍耘,經(jīng)...
    沈念sama閱讀 43,469評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 35,938評論 2 323
  • 正文 我和宋清朗相戀三年熄阻,在試婚紗的時候發(fā)現(xiàn)自己被綠了齿穗。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 38,059評論 1 333
  • 序言:一個原本活蹦亂跳的男人離奇死亡饺律,死狀恐怖窃页,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情复濒,我是刑警寧澤脖卖,帶...
    沈念sama閱讀 33,703評論 4 323
  • 正文 年R本政府宣布,位于F島的核電站巧颈,受9級特大地震影響畦木,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜砸泛,卻給世界環(huán)境...
    茶點故事閱讀 39,257評論 3 307
  • 文/蒙蒙 一十籍、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧唇礁,春花似錦勾栗、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,262評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春界牡,著一層夾襖步出監(jiān)牢的瞬間簿寂,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,485評論 1 262
  • 我被黑心中介騙來泰國打工宿亡, 沒想到剛下飛機(jī)就差點兒被人妖公主榨干…… 1. 我叫王不留常遂,地道東北人。 一個月前我還...
    沈念sama閱讀 45,501評論 2 354
  • 正文 我出身青樓挽荠,卻偏偏與公主長得像烈钞,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子坤按,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 42,792評論 2 345

推薦閱讀更多精彩內(nèi)容