欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

django 實(shí)現(xiàn)celery動(dòng)態(tài)設(shè)置周期任務(wù)執(zhí)行時(shí)間

 更新時(shí)間:2019年11月19日 18:13:37   作者:nsloghe  
今天小編就為大家分享一篇django 實(shí)現(xiàn)celery動(dòng)態(tài)設(shè)置周期任務(wù)執(zhí)行時(shí)間,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧

藍(lán)鯨paas平臺(tái)app開(kāi)發(fā)經(jīng)驗(yàn)分享

騰訊藍(lán)鯨智云是一套基于PaaS的技術(shù)解決方案,提供了完善的前后臺(tái)開(kāi)發(fā)框架、調(diào)度引擎、公共組件等模塊,幫助業(yè)務(wù)的產(chǎn)品和技術(shù)人員快速構(gòu)建低成本、免運(yùn)維的支撐工具和運(yùn)營(yíng)系統(tǒng)。

PaaS平臺(tái)不僅將應(yīng)用服務(wù)的運(yùn)行和開(kāi)發(fā)環(huán)境作為一種服務(wù)提供給開(kāi)發(fā)者用戶(hù),更為開(kāi)發(fā)者用戶(hù)提供了高效便捷的開(kāi)發(fā)服務(wù),如:組件系統(tǒng),統(tǒng)一登錄,權(quán)限管理,后臺(tái)框架,MagicBox,桌面/工作臺(tái)等。

PaaS平臺(tái)提供支持多語(yǔ)言的開(kāi)發(fā)框架,助力運(yùn)維人員能基于平臺(tái)之上以自己擅長(zhǎng)的技術(shù)語(yǔ)言(Python、java等)開(kāi)發(fā)運(yùn)維自動(dòng)化工具。

通過(guò)了解PaaS的設(shè)計(jì)理念,運(yùn)維人員能夠基于藍(lán)鯨的PaaS平臺(tái),從零開(kāi)始進(jìn)行SaaS應(yīng)用的實(shí)戰(zhàn)開(kāi)發(fā),快速構(gòu)建企業(yè)運(yùn)維/運(yùn)營(yíng)系統(tǒng),提升企業(yè)自動(dòng)化水平。

開(kāi)發(fā)背景

之前在一個(gè)銀行自動(dòng)化運(yùn)維項(xiàng)目中,客戶(hù)希望我們?cè)谒{(lán)鯨PaaS上開(kāi)發(fā)一個(gè)數(shù)據(jù)庫(kù)巡檢SaaS。具體需求如下:

為了保障數(shù)據(jù)庫(kù)正常運(yùn)行,保證數(shù)據(jù)的安全性、完整性和可用性,需要開(kāi)發(fā)一個(gè)自動(dòng)化巡檢工具,代替原來(lái)的人工數(shù)據(jù)庫(kù)巡檢。并且巡檢周期窗口分為日巡檢、周巡檢、月巡檢、半年度巡檢四類(lèi):

日巡檢維護(hù)指每日按計(jì)劃進(jìn)行的巡檢維護(hù)活動(dòng),以檢查數(shù)據(jù)庫(kù)運(yùn)行狀態(tài)、數(shù)據(jù)庫(kù)備份狀態(tài)和告警錯(cuò)誤為主要內(nèi)容。

周巡檢維護(hù)指按一周為周期,在每周指定日按計(jì)劃進(jìn)行的巡檢維護(hù)活動(dòng),它的工作內(nèi)容是在日巡檢維護(hù)工作內(nèi)容的基礎(chǔ)上添加數(shù)據(jù)庫(kù)對(duì)象檢查、安全性檢查等內(nèi)容組成。

月巡檢維護(hù)指按一月為周期,在每月指定日按計(jì)劃進(jìn)行的巡檢維護(hù)活動(dòng),它的工作內(nèi)容是在周巡檢維護(hù)工作內(nèi)容的基礎(chǔ)上添加系統(tǒng)參數(shù)配置檢查、硬件與系統(tǒng)平臺(tái)運(yùn)行狀態(tài)檢查等內(nèi)容組成。

年度巡檢維護(hù)指按半年或者一年為周期,在指定日按計(jì)劃進(jìn)行的巡檢維護(hù)活動(dòng),它的工作內(nèi)容是在月巡檢維護(hù)工作內(nèi)容的基礎(chǔ)上添加數(shù)據(jù)庫(kù)性能診斷檢查組成。

巡檢實(shí)現(xiàn)方式分為兩種:

1、立即巡檢

用戶(hù)首先選擇某一業(yè)務(wù)下對(duì)應(yīng)的目標(biāo)主機(jī),需要巡檢的數(shù)據(jù)庫(kù)實(shí)例(支持多選),設(shè)置數(shù)據(jù)采樣區(qū)間(當(dāng)前時(shí)間之前的任意時(shí)間段)。

點(diǎn)擊立即巡檢按鈕,等待數(shù)秒鐘,巡檢完成。點(diǎn)擊查看詳情,導(dǎo)出報(bào)告。

2、定時(shí)巡檢

用戶(hù)可以根據(jù)需求設(shè)置每天、每周、每月來(lái)執(zhí)行巡檢任務(wù)。這里舉例說(shuō)明一下每周,用戶(hù)首先需要配置某業(yè)務(wù)下面主機(jī)、數(shù)據(jù)庫(kù)實(shí)例、巡檢頻率、巡檢時(shí)長(zhǎng)(任意天數(shù))、執(zhí)行時(shí)間(每周某一天的某時(shí)某分某秒),如下圖:

實(shí)現(xiàn)方式

針對(duì)以上需求,平時(shí)我們開(kāi)發(fā)時(shí)使用periodic_task裝飾器,程序啟動(dòng)后自動(dòng)執(zhí)行周期任務(wù):

@periodic_task(run_every=crontab(minute='*/5', hour='*', day_of_week="*"))
def get_time():
  """
  celery 周期任務(wù)示例

  run_every=crontab(minute='*/5', hour='*', day_of_week="*"):每 5 分鐘執(zhí)行一次任務(wù)
  """
  now = datetime.datetime.now()
  logger.error(u"celery 周期任務(wù)調(diào)用成功,當(dāng)前時(shí)間:{}".format(now))

crontab()實(shí)例化的時(shí)候沒(méi)設(shè)置任何參數(shù),都是使用默認(rèn)值。crontab一共有7個(gè)參數(shù),常用有5個(gè)參數(shù)分別為:

minute:分鐘,范圍0-59

hour:小時(shí),范圍0-23

day_of_week:星期幾,范圍0-6。以星期天為開(kāi)始,即0為星期天。這個(gè)星期幾還可以使用英文縮寫(xiě)表示,例如“sun”表示星期天

day_of_month:每月第幾號(hào),范圍1-31

month_of_year:月份,范圍1-12

以上方案有個(gè)弊端:

需要每次根據(jù)巡檢是周幾,來(lái)計(jì)算數(shù)據(jù)采樣區(qū)間具體時(shí)間,然后觸發(fā)定時(shí)任務(wù),可能會(huì)存在誤差。

定時(shí)任務(wù)無(wú)法直接取消

舉例來(lái)說(shuō),假如客戶(hù)選擇每周三早上8點(diǎn)執(zhí)行任務(wù),采樣區(qū)間為3天。假如首次10月1日8:00執(zhí)行任務(wù),觸發(fā)定時(shí)任務(wù)獲取9月28日8:00-10月1日8:00之間的數(shù)據(jù);然后再次執(zhí)行時(shí)間為10月8日,再次觸發(fā)定時(shí)任務(wù),循環(huán)執(zhí)行。

最終,通過(guò)以下方式解決:

模板函數(shù)提前開(kāi)發(fā)完成,加上@task()裝飾器:

@task()
def auto_iip(**kwargs):
   logger.error(kwargs)
   '此處寫(xiě)邏輯代碼'

測(cè)試每分鐘執(zhí)行一次,啟動(dòng)工程,啟動(dòng)celery,調(diào)用下面函數(shù),OK,等待1分鐘,sucess!

from djcelery.models import PeriodicTask, CrontabSchedule
from djcelery.schedulers import ModelEntry, DatabaseScheduler
def test_celery_task(date_data):
  crontab= CrontabSchedule.objects.create(
    hour='*',
    minute='*/1',
    day_of_week='*',
    day_of_month='*',
    month_of_year="*"
  )
  schedule = crontab.schedule

  create_or_update_task = DatabaseScheduler.create_or_update_task
  #'home_application.celery_tasks.auto_iip' home模塊下的task。
  task_template='home_application.celery_tasks.auto_iip'
  #task_name自定義,不能重復(fù)。
  task_name = 'test'
  schedule_dict = {
    'schedule': schedule,
    'args': [],
    'kwargs': data,
    'task': task_template,
    'enabled': 1
  }
  create_or_update_task(task_name, **schedule_dict)

定時(shí)任務(wù)停止,直接根據(jù)task_name進(jìn)行刪除

def delete_celery_task(task_name):
  DatabaseScheduler.delete_task(task_name)

ok!大功告成。

以上這篇django 實(shí)現(xiàn)celery動(dòng)態(tài)設(shè)置周期任務(wù)執(zhí)行時(shí)間就是小編分享給大家的全部?jī)?nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • Python中NameError: name ‘Image‘ is not defined的問(wèn)題解決

    Python中NameError: name ‘Image‘ is not&nb

    本文主要介紹了Python中NameError: name ‘Image‘ is not defined的問(wèn)題解決,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2024-06-06
  • Python第三方Window模塊文件的幾種安裝方法

    Python第三方Window模塊文件的幾種安裝方法

    這篇文章主要介紹了Python第三方Window模塊文件安裝方法,需要的朋友可以參考下
    2018-11-11
  • Python運(yùn)行錯(cuò)誤異常代碼含義對(duì)照表

    Python運(yùn)行錯(cuò)誤異常代碼含義對(duì)照表

    這篇文章主要介紹了Python運(yùn)行錯(cuò)誤異常代碼含義對(duì)照表,需要的朋友可以參考下
    2021-04-04
  • pytorch 數(shù)據(jù)加載性能對(duì)比分析

    pytorch 數(shù)據(jù)加載性能對(duì)比分析

    這篇文章主要介紹了pytorch 數(shù)據(jù)加載性能對(duì)比分析,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2021-03-03
  • Python基于OpenCV庫(kù)Adaboost實(shí)現(xiàn)人臉識(shí)別功能詳解

    Python基于OpenCV庫(kù)Adaboost實(shí)現(xiàn)人臉識(shí)別功能詳解

    這篇文章主要介紹了Python基于OpenCV庫(kù)Adaboost實(shí)現(xiàn)人臉識(shí)別功能,結(jié)合實(shí)例形式分析了Python下載與安裝OpenCV庫(kù)及相關(guān)人臉識(shí)別操作實(shí)現(xiàn)技巧,需要的朋友可以參考下
    2018-08-08
  • Python+Pandas實(shí)現(xiàn)數(shù)據(jù)透視表

    Python+Pandas實(shí)現(xiàn)數(shù)據(jù)透視表

    對(duì)于數(shù)據(jù)透視表,相信對(duì)于Excel比較熟悉的小伙伴都知道如何使用它。本文將利用Python Pandas實(shí)現(xiàn)數(shù)據(jù)透視表功能,感興趣的可以學(xué)習(xí)一下
    2022-06-06
  • Python 如何求矩陣的逆

    Python 如何求矩陣的逆

    這篇文章主要介紹了Python 如何求矩陣的逆案例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2021-03-03
  • 詳解Python中文分詞而生的jieba庫(kù)

    詳解Python中文分詞而生的jieba庫(kù)

    這篇文章主要介紹了詳解Python中文分詞而生的jieba庫(kù),在Python中,最好用的中文分詞庫(kù)是jieba。用“結(jié)巴”給一個(gè)中文分詞庫(kù)命名,非常生動(dòng)形象,同時(shí)還帶有一種程序員式的幽默感,需要的朋友可以參考下
    2023-07-07
  • Python實(shí)現(xiàn)Excel做表自動(dòng)化的最全方法合集

    Python實(shí)現(xiàn)Excel做表自動(dòng)化的最全方法合集

    Microsoft?Excel?是一款強(qiáng)大的辦公工具,廣泛用于數(shù)據(jù)分析、報(bào)告制作、預(yù)算管理等各種任務(wù),本文將深入探討如何使用?Python?進(jìn)行?Excel?表格的自動(dòng)化,需要的可以參考下
    2024-02-02
  • Python辦公自動(dòng)化處理的10大場(chǎng)景應(yīng)用示例

    Python辦公自動(dòng)化處理的10大場(chǎng)景應(yīng)用示例

    這篇文章主要為大家介紹了Python辦公自動(dòng)化處理的10大場(chǎng)景應(yīng)用示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-06-06

最新評(píng)論