最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

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

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

解決:使用定時(shí)任務(wù)加緩存的方式,在后臺(tái)定時(shí)請(qǐng)求數(shù)據(jù)保存到緩存中,而對(duì)外的接口只負(fù)責(zé)讀取緩存的數(shù)據(jù)即可,這樣就不用再等待數(shù)據(jù)的請(qǐng)求了

django_apscheduler的運(yùn)行和django項(xiàng)目的運(yùn)行是相互獨(dú)立的,即使django項(xiàng)目停止,django_apscheduler也會(huì)繼續(xù)運(yùn)行

一、安裝及配置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號(hào)庫(kù)
    }
}

三、代碼

1,定時(shí)請(qǐng)求test_job函數(shù),請(qǐng)求獲取數(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():
        # 定時(shí)每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)
    # 啟動(dòng)定時(shí)器
    scheduler.start()
except Exception as e:
    print('定時(shí)任務(wù)異常:%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())

四、測(cè)試訪問

1,啟動(dòng)django

8aca817ca11745d98bcb9e2e93d1f080.png

 2,查看redis:TTL為過期時(shí)間,每10秒過期,因?yàn)槎〞r(shí)任務(wù)也是10秒,所以就是每10秒自動(dòng)刷新一次

6a4a872184ce4003a3baf7d4b111533a.png

 3,請(qǐng)求,時(shí)間只耗時(shí)5ms,正常請(qǐng)求在5秒左右

7a258eebe20144f69570b87932a2c1c6.png

五、常見問題

運(yùn)行報(bào)錯(cuò):Job identifier (course.views.test_job2) conflicts with an existing job

這是因?yàn)楝F(xiàn)有的工作id與數(shù)據(jù)庫(kù)的id相同導(dǎo)致的,手動(dòng)重要命名id即可

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

相關(guān)文章

  • pandas.DataFrame的for循環(huán)迭代的實(shí)現(xiàn)

    pandas.DataFrame的for循環(huán)迭代的實(shí)現(xiàn)

    本文主要介紹了pandas.DataFrame的for循環(huán)迭代的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2023-02-02
  • python 刪除列表里所有空格項(xiàng)的方法總結(jié)

    python 刪除列表里所有空格項(xiàng)的方法總結(jié)

    下面小編就為大家分享一篇python 刪除列表里所有空格項(xiàng)的方法總結(jié),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來(lái)看看吧
    2018-04-04
  • 一文秒懂pandas中iloc()函數(shù)

    一文秒懂pandas中iloc()函數(shù)

    iloc[]函數(shù)屬于pandas庫(kù)全稱為index?location,即對(duì)數(shù)據(jù)進(jìn)行位置索引,從而在數(shù)據(jù)表中提取出相應(yīng)的數(shù)據(jù),本文通過實(shí)例代碼介紹pandas中iloc()函數(shù),感興趣的朋友一起看看吧
    2023-04-04
  • 使用Python的turtle模塊畫圖的方法

    使用Python的turtle模塊畫圖的方法

    這篇文章主要介紹了使用Python的turtle模塊畫圖的方法,涉及turtle簡(jiǎn)介,運(yùn)動(dòng)命令,畫筆控制命令的分享,以及具體操作的步驟,具有一定參考價(jià)值,需要的朋友可以了解下。
    2017-11-11
  • 便捷提取python導(dǎo)入包的屬性方法

    便捷提取python導(dǎo)入包的屬性方法

    今天小編就為大家分享一篇便捷提取python導(dǎo)入包的屬性方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來(lái)看看吧
    2018-10-10
  • 調(diào)試Python程序代碼的幾種方法總結(jié)

    調(diào)試Python程序代碼的幾種方法總結(jié)

    這篇文章主要介紹了調(diào)試Python程序代碼的幾種方法總結(jié),文中代碼基于Python2.x版本,需要的朋友可以參考下
    2015-04-04
  • Pandas時(shí)間序列基礎(chǔ)詳解(轉(zhuǎn)換,索引,切片)

    Pandas時(shí)間序列基礎(chǔ)詳解(轉(zhuǎn)換,索引,切片)

    今天小編就為大家分享一篇Pandas時(shí)間序列基礎(chǔ)詳解(轉(zhuǎn)換,索引,切片),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來(lái)看看吧
    2020-02-02
  • python結(jié)合opencv實(shí)現(xiàn)人臉檢測(cè)與跟蹤

    python結(jié)合opencv實(shí)現(xiàn)人臉檢測(cè)與跟蹤

    在Python下用起來(lái)OpenCV很爽,代碼很簡(jiǎn)潔,很清晰易懂。使用的是Haar特征的分類器,訓(xùn)練之后得到的數(shù)據(jù)存在一個(gè)xml中。下面我們就來(lái)詳細(xì)談?wù)劇?/div> 2015-06-06
  • 在cmd中運(yùn)行.py文件: python的操作步驟

    在cmd中運(yùn)行.py文件: python的操作步驟

    今天小編就為大家分享一篇在cmd中運(yùn)行.py文件: python的操作步驟,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來(lái)看看吧
    2018-05-05
  • Django數(shù)據(jù)庫(kù)遷移常見使用方法

    Django數(shù)據(jù)庫(kù)遷移常見使用方法

    這篇文章主要介紹了Django數(shù)據(jù)庫(kù)遷移常見使用方法,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-11-11

最新評(píng)論

平遥县| 兴山县| 松原市| 临清市| 专栏| 谢通门县| 吉木萨尔县| 托里县| 英德市| 磐石市| 陆河县| 开化县| 阳西县| 屏东县| 正定县| 同心县| 东港市| 沙洋县| 古交市| 黄石市| 石首市| 安丘市| 邹城市| 都昌县| 石城县| 湖南省| 潜山县| 当涂县| 饶阳县| 多伦县| 西乡县| 武定县| 洛宁县| 汝南县| 五原县| 汉源县| 遂川县| 汤原县| 绍兴县| 印江| 云林县|