chinese直男口爆体育生外卖, 99久久er热在这里只有精品99, 又色又爽又黄18禁美女裸身无遮挡, gogogo高清免费观看日本电视,私密按摩师高清版在线,人妻视频毛茸茸,91论坛 兴趣闲谈,欧美 亚洲 精品 8区,国产精品久久久久精品免费

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫(xiě)文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

基于Django的Celery異步任務(wù)和定時(shí)任務(wù)的實(shí)戰(zhàn)教程

科技綠洲 ? 來(lái)源:Python實(shí)用寶典 ? 作者:Python實(shí)用寶典 ? 2023-11-02 10:45 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

Django與Celery是基于Python進(jìn)行Web后端開(kāi)發(fā)的核心搭配,在運(yùn)營(yíng)開(kāi)發(fā)(即面向企業(yè)內(nèi)部)的場(chǎng)景中非常常見(jiàn)。

下面是基于Django的Celery異步任務(wù)和定時(shí)任務(wù)的實(shí)戰(zhàn)教程,大家覺(jué)得有用的話點(diǎn)個(gè)贊/在看吧!

1.配置Django Celery

配置celery主要有幾點(diǎn):

  1. 在settings.py的同級(jí)目錄下,創(chuàng)建celery.py文件(名字自己隨意取),這個(gè)文件主要是用來(lái)生成celery的實(shí)例app.

圖片

我們將 celery 實(shí)例的 broker 和 backend 都設(shè)為了redis.

其中 broker 的意思是“經(jīng)紀(jì)人”,像股票經(jīng)紀(jì)人一樣,是用于促成“交易”的,Celery中它的職責(zé)就是給 worker 推送任務(wù)。

而backend的職責(zé)是存放執(zhí)行信息和結(jié)果,這些數(shù)據(jù)需要被持久化存于數(shù)據(jù)庫(kù)。但為了簡(jiǎn)化問(wèn)題,我們將其與broker一樣放置于redis當(dāng)中。

  1. 需要你在自己已經(jīng)創(chuàng)建的app(不是celery的app,而是django項(xiàng)目的app)目錄下面,創(chuàng)建task.py文件(這個(gè)文件名只能是這個(gè))

圖片

因?yàn)镃elery會(huì)統(tǒng)一從每個(gè)app下面的tasks里面監(jiān)聽(tīng)任務(wù)。

  1. 編寫(xiě)tasks.py的任務(wù)

看一下tasks內(nèi)部的任務(wù)如何寫(xiě):

圖片

任務(wù)的目標(biāo)是延遲3秒后,返回一個(gè)語(yǔ)句。

  1. init.py中的設(shè)置

這個(gè)是非常關(guān)鍵的一點(diǎn),如何讓django在啟動(dòng)的時(shí)候,也把celery給啟動(dòng)了呢?
答案是在項(xiàng)目的init文件內(nèi),導(dǎo)入celery的app

圖片

2.Django 其他配置

為了能夠觸發(fā)該異步任務(wù),我們接下來(lái)配置一些常規(guī)文件,views和url,首先是views函數(shù):

圖片

然后是url:

path('test_c', test_c, name='test_c'),

3.進(jìn)行測(cè)試

首先,運(yùn)行django項(xiàng)目

python manage.py runserver

這樣,django項(xiàng)目和celery的app就被一起啟動(dòng)了,但是這個(gè)時(shí)候是無(wú)法執(zhí)行這個(gè)task的,因?yàn)閣orker沒(méi)有被啟動(dòng),我們可以試一下:

訪問(wèn): http://127.0.0.1:8000/stats/test_c

會(huì)得到以下報(bào)錯(cuò):

圖片

正確的姿勢(shì)是怎么樣的?需要先激活worker,然后再訪問(wèn)API

celery -A NBAsite worker -l info

結(jié)果如下:

圖片

從上圖下方的log信息里可以看到,在延遲了3秒后,任務(wù)啟動(dòng)并返回字符串,而在頁(yè)面上,也可以看到成功返回。

需要注意的是,如果你修改了tasks的內(nèi)容,是需要重啟celery才能生效的,最簡(jiǎn)單的方法就是重啟django項(xiàng)目。

這樣,我們就完成了簡(jiǎn)單的異步任務(wù)的配置和使用。

4.定時(shí)任務(wù)配置

在異步任務(wù)中,我們只用到了worker,而在定時(shí)任務(wù)中,還要用到celery的beat調(diào)度器。

首先來(lái)看下如何配置定時(shí)任務(wù),或者說(shuō)如何配置這個(gè)調(diào)度器。

還是在celery.py里面進(jìn)行配置:

圖片

重點(diǎn)是增加了app.conf.beat_schedule這個(gè)定時(shí)任務(wù)配置,指定了 stats 文件夾下 tasks.py 中的auto_sc函數(shù),定時(shí)于20:47分執(zhí)行。

5.具體任務(wù)頁(yè)面tasks

增加一個(gè)對(duì)應(yīng)要做定時(shí)任務(wù)的task

@shared_task
def auto_sc():
    print ('sc test?')
    return 'halo'

6.運(yùn)行命令和結(jié)果

命令的話可以將激活worker和激活beat合并在一起,如下:

celery -A NBAsite worker -B -l info

不過(guò),windows不被允許這么使用,因此在windows環(huán)境下,你需要同時(shí)打開(kāi)worker和beater:

celery -A NBAsite worker -l info
celery -A NBAsite beat -l info

圖片

看上圖下方的log可知定時(shí)任務(wù)被成功執(zhí)行。至此便完成了定時(shí)任務(wù)的配置與執(zhí)行。

聲明:本文內(nèi)容及配圖由入駐作者撰寫(xiě)或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 數(shù)據(jù)庫(kù)
    +關(guān)注

    關(guān)注

    7

    文章

    4078

    瀏覽量

    68520
  • python
    +關(guān)注

    關(guān)注

    58

    文章

    4882

    瀏覽量

    90285
  • Django
    +關(guān)注

    關(guān)注

    0

    文章

    45

    瀏覽量

    10927
收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評(píng)論

    相關(guān)推薦
    熱點(diǎn)推薦

    關(guān)于stm32系統(tǒng)定時(shí)任務(wù)的問(wèn)題

    在用stm32做一個(gè)飛控程序時(shí)。需要用到上面這種系統(tǒng)循環(huán)定時(shí)任務(wù),有一個(gè)問(wèn)題:在System_Task_Loop函數(shù)里面,有1ms 、2ms、5ms的循環(huán)任務(wù),但是他的這些定時(shí)是怎么得到的?是隨便
    發(fā)表于 10-10 23:43

    Linux系統(tǒng)定時(shí)任務(wù)Crond

    會(huì)定期(默認(rèn)每分鐘檢查一次)檢查系統(tǒng)中是否有要執(zhí)行的任務(wù)工作,如果有,便會(huì)根據(jù)其預(yù)先設(shè)定的定時(shí)任務(wù)規(guī)則自動(dòng)執(zhí)行該定時(shí)任務(wù)工作,這個(gè)crond定時(shí)任務(wù)服務(wù)就相當(dāng)于我們平時(shí)早起使用的鬧鐘一
    發(fā)表于 07-05 06:22

    linux的循環(huán)定時(shí)任務(wù)

    linux循環(huán)定時(shí)任務(wù)
    發(fā)表于 05-20 14:59

    ucos iii定時(shí)任務(wù)有什么用?

    ucos iii 的定時(shí)任務(wù)有什么用,通過(guò)定時(shí)任務(wù)定時(shí)與普通的調(diào)用系統(tǒng)定時(shí)函數(shù)定時(shí)有什么區(qū)別?
    發(fā)表于 10-07 06:16

    定時(shí)任務(wù)的發(fā)展史是怎么樣的

    定時(shí)任務(wù)是互聯(lián)網(wǎng)行業(yè)里最常用的服務(wù)之一,本文給大家介紹定時(shí)任務(wù)在我司的發(fā)展歷程。 linux系統(tǒng)中一般使用crontab命令來(lái)實(shí)現(xiàn),在Java世界里,使用最廣泛的就是quartz了。我司
    發(fā)表于 07-18 17:38 ?0次下載
    <b class='flag-5'>定時(shí)任務(wù)</b>的發(fā)展史是怎么樣的

    SpringBoot如何實(shí)現(xiàn)動(dòng)態(tài)增刪啟停定時(shí)任務(wù)

    在spring boot項(xiàng)目中,可以通過(guò) @EnableScheduling 注解和@Scheduled注解實(shí)現(xiàn)定時(shí)任務(wù),也可以通過(guò)SchedulingConfigurer接口來(lái)實(shí)現(xiàn)定時(shí)任務(wù)。但是
    的頭像 發(fā)表于 09-24 09:49 ?3730次閱讀
    SpringBoot如何實(shí)現(xiàn)動(dòng)態(tài)增刪啟停<b class='flag-5'>定時(shí)任務(wù)</b>

    Python定時(shí)任務(wù)的實(shí)現(xiàn)方式

    在日常工作中,我們常常會(huì)用到需要周期性執(zhí)行的任務(wù),一種方式是采用 Linux 系統(tǒng)自帶的 crond 結(jié)合命令行實(shí)現(xiàn)。另外一種方式是直接使用Python。接下來(lái)整理的是常見(jiàn)的Python定時(shí)任務(wù)
    的頭像 發(fā)表于 10-08 15:20 ?1.2w次閱讀

    解析Golang定時(shí)任務(wù)庫(kù)gron設(shè)計(jì)和原理

    正巧,最近看到了 gron 這個(gè)開(kāi)源項(xiàng)目,它是用 Golang 實(shí)現(xiàn)一個(gè)并發(fā)安全的定時(shí)任務(wù)庫(kù)。實(shí)現(xiàn)非常簡(jiǎn)單精巧,代碼量也不多。今天我們就來(lái)一起結(jié)合源碼看一下,怎樣基于 Golang 的能力做出來(lái)一個(gè)【定時(shí)任務(wù)庫(kù)】。
    的頭像 發(fā)表于 12-15 13:57 ?2278次閱讀

    求一種SpringBoot定時(shí)任務(wù)動(dòng)態(tài)管理通用解決方案

    SpringBoot的定時(shí)任務(wù)的加強(qiáng)工具,實(shí)現(xiàn)對(duì)SpringBoot原生的定時(shí)任務(wù)進(jìn)行動(dòng)態(tài)管理,完全兼容原生@Scheduled注解,無(wú)需對(duì)原本的定時(shí)任務(wù)進(jìn)行修改
    的頭像 發(fā)表于 02-03 09:49 ?1645次閱讀

    在Spring Boot中如何使用定時(shí)任務(wù)

    本文介紹在 Spring Boot 中如何使用定時(shí)任務(wù),使用非常簡(jiǎn)單,就不做過(guò)多說(shuō)明了。
    的頭像 發(fā)表于 04-12 10:56 ?1654次閱讀

    如何動(dòng)態(tài)添加修改刪除定時(shí)任務(wù)?

    如何動(dòng)態(tài)添加修改刪除定時(shí)任務(wù)?那么我們一起看看具體怎么實(shí)現(xiàn),先看下本節(jié)大綱: (1)思路說(shuō)明; (2)代碼解析; (3)修改定時(shí)任務(wù)執(zhí)行周期特別說(shuō)明;
    的頭像 發(fā)表于 04-12 11:06 ?1900次閱讀

    Linux如何使用cron進(jìn)行定時(shí)任務(wù)的操作

    按計(jì)劃執(zhí)行命令對(duì)于計(jì)算機(jī)來(lái)說(shuō)非常重要,因?yàn)榧偃缥矣H自去執(zhí)行一些任務(wù)的話,可能會(huì)因?yàn)槎喾矫嬉蛩夭荒馨磿r(shí)執(zhí)行,所以定時(shí)任務(wù)就顯得非常重要了! cron就是一個(gè)能夠執(zhí)行定時(shí)任務(wù)的命令,其實(shí)該命令本身不難,下面小編帶您詳細(xì)了解!
    的頭像 發(fā)表于 05-12 16:27 ?2796次閱讀

    python定時(shí)任務(wù)實(shí)踐

    由于程序需求,監(jiān)測(cè)配置變化需要設(shè)置定時(shí)任務(wù),每分鐘執(zhí)行一次,對(duì)任務(wù)持久化要求不高,不需要時(shí)可以關(guān)閉定時(shí)任務(wù)
    的頭像 發(fā)表于 05-20 17:53 ?1848次閱讀
    python<b class='flag-5'>定時(shí)任務(wù)</b>實(shí)踐

    Celery Beat 的周期調(diào)度機(jī)制及實(shí)現(xiàn)原理

    基于Django從制作一個(gè)簡(jiǎn)單的周期任務(wù)開(kāi)始,然后一步一步拆解 Celery Beat 的源代碼。 相關(guān)前置應(yīng)用知識(shí),可以閱讀以下文章: 實(shí)戰(zhàn)教程!
    的頭像 發(fā)表于 10-31 15:24 ?1912次閱讀

    linux定時(shí)任務(wù)的用法總結(jié)

    習(xí)慣了使用 windows 的計(jì)劃任務(wù),使用 linux 中的 crontab 管理定時(shí)任務(wù)時(shí)很不適應(yīng)。
    的頭像 發(fā)表于 08-14 18:16 ?1710次閱讀
    linux<b class='flag-5'>定時(shí)任務(wù)</b>的用法總結(jié)