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

django使用定時任務django_apscheduler的實現(xiàn)

 更新時間:2023年08月09日 16:51:52   作者:弈鳴敲代碼  
定時任務無論是個人開發(fā)還是企業(yè)業(yè)務都是需要的,本文主要介紹了django使用定時任務django_apscheduler的實現(xiàn),減少請求時需要用戶等待的時間,感興趣的可以了解一下

問題:當數(shù)據(jù)量過大,請求時間過長的時候,使用django的緩存可以解決部分問題,但是當緩存數(shù)據(jù)過期時重新請求又是耗時的時間,請求時需要用戶等待。

解決:使用定時任務加緩存的方式,在后臺定時請求數(shù)據(jù)保存到緩存中,而對外的接口只負責讀取緩存的數(shù)據(jù)即可,這樣就不用再等待數(shù)據(jù)的請求了

django_apscheduler的運行和django項目的運行是相互獨立的,即使django項目停止,django_apscheduler也會繼續(xù)運行

一、安裝及配置django_apscheduler

1,使用pip安裝django_apscheduler

pip install -i https://pypi.douban.com/simple django_apscheduler

2,settings.py中配置INSTALLED_APPS

在INSTALLED_APPS中添加django_apscheduler

INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'corsheaders',
    'rest_framework',
    'course',
    'django_apscheduler',  # 添加
]

3,生成遷移

python manage.py makemigrationspython manage.py migrate

遷移后生成兩張表

7dfb31601d1b440da3f3efabc95f21cf.png

二、安裝及配置django_redis

1,使用pip安裝django_redis

pip install -i https://pypi.douban.com/simple django_redis

2,在settings.py中配置CACHES

# 配置緩存保存
CACHES = {
    'default': {
        'BACKEND': 'django_redis.cache.RedisCache',
        'LOCATION': 'redis://127.0.0.1:6379/1',  # 使用1號庫
    }
}

三、代碼

1,定時請求test_job函數(shù),請求獲取數(shù)據(jù)保存在redis緩存中

from apscheduler.schedulers.background import BackgroundScheduler
from django_apscheduler.jobstores import DjangoJobStore, register_events, register_job
try:
    scheduler = BackgroundScheduler()
    scheduler.add_jobstore(DjangoJobStore(), "default")
    @register_job(scheduler, "interval", seconds=10)
    def test_job():
        # 定時每5秒執(zhí)行一次
        count = 0
        courses = Course.objects.values('name')
        for i in range(1000000):
            for course in courses:
                count += len(str(course["name"]))
        cache.set("word_count", count, 10)
        return JsonResponse({"count": count})
    register_events(scheduler)
    # 啟動定時器
    scheduler.start()
except Exception as e:
    print('定時任務異常:%s' % str(e))

2,定義接口,獲取保存的數(shù)據(jù)

 class WordCountView(View):
    def get(self, request):
        word_count = cache.get("word_count")
        if word_count:
            return JsonResponse({"count": word_count})

3,配置路由

path('count/', views.WordCountView.as_view())

四、測試訪問

1,啟動django

8aca817ca11745d98bcb9e2e93d1f080.png

 2,查看redis:TTL為過期時間,每10秒過期,因為定時任務也是10秒,所以就是每10秒自動刷新一次

6a4a872184ce4003a3baf7d4b111533a.png

 3,請求,時間只耗時5ms,正常請求在5秒左右

7a258eebe20144f69570b87932a2c1c6.png

五、常見問題

運行報錯:Job identifier (course.views.test_job2) conflicts with an existing job

這是因為現(xiàn)有的工作id與數(shù)據(jù)庫的id相同導致的,手動重要命名id即可

 到此這篇關于django使用定時任務django_apscheduler的實現(xiàn)的文章就介紹到這了,更多相關django 定時任務內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • python中torch.load中的map_location參數(shù)使用

    python中torch.load中的map_location參數(shù)使用

    在PyTorch中,torch.load()函數(shù)是用于加載保存模型或張量數(shù)據(jù)的重要工具,map_location參數(shù)為我們提供了極大的靈活性,具有一定的參考價值,感興趣的可以了解一下
    2024-03-03
  • 如何查看python關鍵字

    如何查看python關鍵字

    在本篇文章里小編給大家整理的是一篇關于python關鍵字的查看方法和實例內容,有興趣的朋友們可以學習下。
    2021-01-01
  • Python最火、R極具潛力 2017機器學習調查報告

    Python最火、R極具潛力 2017機器學習調查報告

    Python最火,R極具潛力,分享2017機器學習調查報告,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-12-12
  • python中partial庫的使用方法解析

    python中partial庫的使用方法解析

    這篇文章主要介紹了python中partial庫的使用方法解析,文章圍繞主題展開詳細的內容介紹,具有一定的參考價值,感興趣的小伙伴可以參考一下
    2022-08-08
  • python3 wechatpy微信支付的項目實踐

    python3 wechatpy微信支付的項目實踐

    本文主要介紹了python3 wechatpy微信支付的項目實踐,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2023-01-01
  • Python中數(shù)字以及算數(shù)運算符的相關使用

    Python中數(shù)字以及算數(shù)運算符的相關使用

    這篇文章主要介紹了Python中數(shù)字以及算數(shù)運算符的相關使用,是Python入門學習中的基礎知識,需要的朋友可以參考下
    2015-10-10
  • 實操Python爬取覓知網(wǎng)素材圖片示例

    實操Python爬取覓知網(wǎng)素材圖片示例

    大家好,本篇文章介紹的是實操Python爬取覓知網(wǎng)素材圖片示例,感興趣的朋友趕快來看一看吧,對你有用的話記得收藏起來,方便下次瀏覽
    2021-11-11
  • 利用python查看官方文檔

    利用python查看官方文檔

    這篇文章主要介紹了利用python查看官方文檔,我們在學習和工作中,總是會遇到一些問題,或許官方文檔能解決這一問題,下面我們就來看看python如何查看官方文檔吧
    2022-01-01
  • Python3.5內置模塊之time與datetime模塊用法實例分析

    Python3.5內置模塊之time與datetime模塊用法實例分析

    這篇文章主要介紹了Python3.5內置模塊之time與datetime模塊用法,結合實例形式分析了Python3.5 time與datetime模塊日期時間相關操作技巧,需要的朋友可以參考下
    2019-04-04
  • Python Pyqt5多線程更新UI代碼實例(防止界面卡死)

    Python Pyqt5多線程更新UI代碼實例(防止界面卡死)

    這篇文章通過代碼實例給大家介紹了Python Pyqt5多線程更新UI防止界面卡死的問題,代碼簡單易懂,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友參考下吧
    2021-12-12

最新評論