国产成人精品久久免费动漫-国产成人精品天堂-国产成人精品区在线观看-国产成人精品日本-a级毛片无码免费真人-a级毛片毛片免费观看久潮喷

您的位置:首頁技術文章
文章詳情頁

python - celery beat 調度如何運行期間動態添加任務?

瀏覽:109日期:2022-07-10 15:29:13

問題描述

我嘗試過django-celery-beat,在admin后臺添加任務,可以實現動態添加任務但要重啟celery beat才生效,請問,有其他方試嗎?

問題解答

回答1:

無法動態添加,必須重啟 beat。

ask 回答過原因了 #3493

回答2:

有個思路,你可以考慮,我目前也在嘗試這個方法,處于摸石過河階段。celery是支持定時任務,但是不符合我的需求,我需要像linux下的crontab這樣動態添加定時任務,我也看了django-celery-beat,因為用的是Flask,發現不值得參考實現,所以一直在看文檔搜資料,終于被我找到一種方式,celery的apply_async這個函數非常有用,它有個eta參數,它的簡化使用是countdown,但是eta的威力是很巨大的,因為它只接受datetime對象,比如你給定一個任務在2017-05-02 20:0:0執行,你可以這樣使用:

job.apply_async(args=args, kwarg=kwargs, eta=datetime(2017,5,2,20,0,0))

是不是很少用,假如我有一個任務需要每天晚上八點執行,我可以利用這個eta參數實現。偽代碼如下:

時間規則 = ’每天晚上八點執行’第一次調用任務,先計算最近的執行時間,作為eta的參數,調用apply_async函數,然后第一次任務執行成功,得到上次任務的eta參數值,在天的值上加一,然后把新的執行時間作為eta的參數再次調用apply_async函數,這里省略了很多判斷,自行腦補。循環往復,是不是一直按每天晚上八點執行。

這里有個非常重要的點是如何在任務執行成功的時候計算下一次的執行時間,做法如下

class MyTask(Task): def on_success(self, retval, task_id, args, kwargs):print ’task done: {0}’.format(retval)return super(MyTask, self).on_success(retval, task_id, args, kwargs) def on_failure(self, exc, task_id, args, kwargs, einfo):print ’task fail, reason: {0}’.format(exc)return super(MyTask, self).on_failure(exc, task_id, args, kwargs, einfo)@app.task(base=MyTask)def add(x, y): return x + y

它提供了任務執行成功和失敗的函數,我們只要在此基礎上重寫就可以了,我說的只是最核心的部分,具體怎么做有很多方法,

標簽: Python 編程
相關文章:
主站蜘蛛池模板: 欧美高清另类自拍视频在线看 | 能直接看的一级欧美毛片 | 亚洲精品片 | 精品日韩欧美一区二区三区在线播放 | 亚洲第一se情网站 | 亚洲欧美日韩中文字幕在线 | 毛片直接看 | 免费国产a国产片高清不卡 免费国产不卡午夜福在线 免费国产不卡午夜福在线观看 | 一级做a爰片性色毛片小说 一级做a爰片性色毛片中国 | 亚洲综合自拍 | 成人免费网站在线观看 | 国产成人精品在视频 | 久久久亚洲精品蜜桃臀 | 男人天堂视频在线观看 | 韩日黄色片 | 成人免费一级在线播放 | 欧美在线一二三区 | 国产三级日本三级在线播放 | 欧美三区 | 偷拍精品视频一区二区三区 | 亚洲国产成人久久综合一 | 国产男女爽爽爽爽爽视频 | 污到下面流水的视频 | 极品欧美 | 国产美女午夜精品福利视频 | 国产亚洲小视频 | 国产成人精品视频免费 | 欧美成人免费全部色播 | 深夜福利国产福利视频 | 日本一视频一区视频二区 | 91理论片| 性盈盈影院在线观看 | 日本免费大黄在线观看 | 欧美三级在线观看不卡视频 | 免费视频亚洲 | 亚洲一片| 久久只有精品视频 | 一级成人毛片 | 国产欧美日韩另类 | 国产精品推荐 | 成人黄色免费看 |