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

在django-xadmin中APScheduler的啟動初始化實例

 更新時間:2019年11月15日 16:34:43   作者:roystime  
今天小編就為大家分享一篇在django-xadmin中APScheduler的啟動初始化實例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧

環(huán)境: python3.5.x + django1.9.x + xadmin-for-python3

APScheduler做為一個輕量級和使用量很多的后臺任務(wù)計劃(scheduler)包,可以方便的隨系統(tǒng)啟動/關(guān)閉而啟動/關(guān)閉,如果整合到django中,啟動APScheduler的代碼該寫在哪里好呢,

以下幾個方式供參考:

1. (推薦)自定義Middleware,非常類似Java中的Filter,缺點是要有URL訪問才會觸發(fā)啟動,如果系統(tǒng)還沒有啟動完就訪問了URL會觸發(fā)__init__多次調(diào)用(多次http同時請求造成),可以通過threading的lock同步代碼和狀態(tài)限制執(zhí)行一次

class StartupMiddleware(object):
 def __init__(self):
  #啟動后臺任務(wù)APScheduler
  init_scheduler()
 
  from django.core.exceptions import MiddlewareNotUsed
  raise MiddlewareNotUsed #TIP 拋出此異常,則Django將從 middleware 棧中移出該 middleware,請求就不會經(jīng)過此middleware
 
 def process_request(self, request):
  print("*****enter startup middleware")
scheduler = None
def init_scheduler():
 global scheduler
 lock = threading.Lock() # TIP 多線程同步代碼
 with lock:
  if scheduler and scheduler.running:
   print('*****APScheduler is already started, pid:{}, tid:{}'.format(os.getpid(), threading.current_thread().getName()))
   return scheduler
  executors = {
   'default': ThreadPoolExecutor(5),#線程模式下進程池大小
   'processpool': ProcessPoolExecutor(5),#進程模式下進程池大小
  }
  job_defaults = {
   'coalesce': True, #如果有幾次未執(zhí)行,條件可以時是否只執(zhí)行一次
   'max_instances': 1, #同一個job同一時間最多有幾個實例再跑
  }
 
  scheduler = BackgroundScheduler(executors=executors, job_defaults=job_defaults, timezone=timezone(TIME_ZONE))
 
  scheduler.add_job(...)
  scheduler.start()
  return scheduler

2. 應(yīng)用中的settings.py文件,django在開發(fā)環(huán)境默認(rèn)會啟動兩個python進程(對于開發(fā)環(huán)境還是很實用的,改代碼后會自動重啟),放settings.py中的代碼會被這兩個python進程都調(diào)用一次,當(dāng)然可以通過--reload參數(shù)只啟動一個python進程,另外加載settings.py時部分app還未loaded,限制了應(yīng)用的代碼。

3. 頂層的urls文件, 這個不管你django啟動時是一個進程還是兩個進程,urls文件也只會被加載一次,但存在的缺陷就是在執(zhí)行makemigrations這樣的命令時,會同樣出現(xiàn)app還未loaded的錯...

以上這篇在django-xadmin中APScheduler的啟動初始化實例就是小編分享給大家的全部內(nèi)容了,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • Python try except else使用詳解

    Python try except else使用詳解

    這篇文章主要介紹了Python try except else使用詳解,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-01-01
  • python matlab庫簡單用法講解

    python matlab庫簡單用法講解

    在本篇文章里小編給大家整理了一篇關(guān)于python matlab庫簡單用法講解內(nèi)容,有需要的朋友們可以學(xué)習(xí)下。
    2020-12-12
  • Python爬取騰訊疫情實時數(shù)據(jù)并存儲到mysql數(shù)據(jù)庫的示例代碼

    Python爬取騰訊疫情實時數(shù)據(jù)并存儲到mysql數(shù)據(jù)庫的示例代碼

    這篇文章主要介紹了Python爬取騰訊疫情實時數(shù)據(jù)并存儲到mysql數(shù)據(jù)庫的示例代碼,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2021-03-03
  • Pandas把dataframe或series轉(zhuǎn)換成list的方法

    Pandas把dataframe或series轉(zhuǎn)換成list的方法

    這篇文章主要介紹了Pandas把dataframe或series轉(zhuǎn)換成list的方法,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-06-06
  • 攻擊者是如何將PHP Phar包偽裝成圖像以繞過文件類型檢測的(推薦)

    攻擊者是如何將PHP Phar包偽裝成圖像以繞過文件類型檢測的(推薦)

    這篇文章主要介紹了攻擊者是如何將PHP Phar包偽裝成圖像以繞過文件類型檢測的,需要的朋友可以參考下
    2018-10-10
  • Python使用pywebview開發(fā)桌面應(yīng)用的全過程

    Python使用pywebview開發(fā)桌面應(yīng)用的全過程

    當(dāng)使用桌面應(yīng)用程序的時候,有沒有那么一瞬間,想學(xué)習(xí)一下桌面應(yīng)用程序開發(fā)?下面這篇文章主要給大家介紹了關(guān)于Python使用pywebview開發(fā)桌面應(yīng)用的相關(guān)資料,需要的朋友可以參考下
    2022-06-06
  • python中的數(shù)據(jù)結(jié)構(gòu)比較

    python中的數(shù)據(jù)結(jié)構(gòu)比較

    這篇文章主要介紹了python中的數(shù)據(jù)結(jié)構(gòu)比較,本文給大家介紹的非常詳細(xì),具有一定的參考借鑒價值,需要的朋友可以參考下
    2019-05-05
  • 用Python字符畫出了一個谷愛凌

    用Python字符畫出了一個谷愛凌

    之前經(jīng)常在網(wǎng)上看到那種由一個個字符構(gòu)成的視頻,非常炫酷。本文也將利用Python字符畫一個最近的冬奧冠軍谷愛凌,感興趣的小伙伴可以學(xué)習(xí)一下
    2022-02-02
  • Python help()函數(shù)用法詳解

    Python help()函數(shù)用法詳解

    這篇文章主要介紹了Python help()函數(shù)的作用,并舉例說明它的詳細(xì)用法,需要的朋友可以參考下
    2014-03-03
  • Python-typing: 類型標(biāo)注與支持 Any類型詳解

    Python-typing: 類型標(biāo)注與支持 Any類型詳解

    這篇文章主要介紹了Python-typing: 類型標(biāo)注與支持 Any類型詳解,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2021-05-05

最新評論