在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

基于Django的Celery異步任務和定時任務的實戰教程

科技綠洲 ? 來源:Python實用寶典 ? 作者:Python實用寶典 ? 2023-11-02 10:45 ? 次閱讀

Django與Celery是基于Python進行Web后端開發的核心搭配,在運營開發(即面向企業內部)的場景中非常常見。

下面是基于Django的Celery異步任務和定時任務的實戰教程,大家覺得有用的話點個贊/在看吧!

1.配置Django Celery

配置celery主要有幾點:

  1. 在settings.py的同級目錄下,創建celery.py文件(名字自己隨意取),這個文件主要是用來生成celery的實例app.

圖片

我們將 celery 實例的 broker 和 backend 都設為了redis.

其中 broker 的意思是“經紀人”,像股票經紀人一樣,是用于促成“交易”的,Celery中它的職責就是給 worker 推送任務。

而backend的職責是存放執行信息和結果,這些數據需要被持久化存于數據庫。但為了簡化問題,我們將其與broker一樣放置于redis當中。

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

圖片

因為Celery會統一從每個app下面的tasks里面監聽任務。

  1. 編寫tasks.py的任務

看一下tasks內部的任務如何寫:

圖片

任務的目標是延遲3秒后,返回一個語句。

  1. init.py中的設置

這個是非常關鍵的一點,如何讓django在啟動的時候,也把celery給啟動了呢?
答案是在項目的init文件內,導入celery的app

圖片

2.Django 其他配置

為了能夠觸發該異步任務,我們接下來配置一些常規文件,views和url,首先是views函數:

圖片

然后是url:

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

3.進行測試

首先,運行django項目

python manage.py runserver

這樣,django項目和celery的app就被一起啟動了,但是這個時候是無法執行這個task的,因為worker沒有被啟動,我們可以試一下:

訪問: http://127.0.0.1:8000/stats/test_c

會得到以下報錯:

圖片

正確的姿勢是怎么樣的?需要先激活worker,然后再訪問API

celery -A NBAsite worker -l info

結果如下:

圖片

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

需要注意的是,如果你修改了tasks的內容,是需要重啟celery才能生效的,最簡單的方法就是重啟django項目。

這樣,我們就完成了簡單的異步任務的配置和使用。

4.定時任務配置

在異步任務中,我們只用到了worker,而在定時任務中,還要用到celery的beat調度器。

首先來看下如何配置定時任務,或者說如何配置這個調度器。

還是在celery.py里面進行配置:

圖片

重點是增加了app.conf.beat_schedule這個定時任務配置,指定了 stats 文件夾下 tasks.py 中的auto_sc函數,定時于20:47分執行。

5.具體任務頁面tasks

增加一個對應要做定時任務的task

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

6.運行命令和結果

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

celery -A NBAsite worker -B -l info

不過,windows不被允許這么使用,因此在windows環境下,你需要同時打開worker和beater:

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

圖片

看上圖下方的log可知定時任務被成功執行。至此便完成了定時任務的配置與執行。

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 數據庫
    +關注

    關注

    7

    文章

    3827

    瀏覽量

    64523
  • python
    +關注

    關注

    56

    文章

    4800

    瀏覽量

    84834
  • Django
    +關注

    關注

    0

    文章

    44

    瀏覽量

    10397
收藏 人收藏

    評論

    相關推薦

    關于stm32系統定時任務的問題

    在用stm32做一個飛控程序時。需要用到上面這種系統循環定時任務,有一個問題:在System_Task_Loop函數里面,有1ms 、2ms、5ms的循環任務,但是他的這些定時是怎么得到的?是隨便
    發表于 10-10 23:43

    Linux系統定時任務Crond

    會定期(默認每分鐘檢查一次)檢查系統中是否有要執行的任務工作,如果有,便會根據其預先設定的定時任務規則自動執行該定時任務工作,這個crond定時任務服務就相當于我們平時早起使用的鬧鐘一
    發表于 07-05 06:22

    linux的循環定時任務

    linux循環定時任務
    發表于 05-20 14:59

    ucos iii定時任務有什么用?

    ucos iii 的定時任務有什么用,通過定時任務定時與普通的調用系統定時函數定時有什么區別?
    發表于 10-07 06:16

    定時任務的發展史是怎么樣的

    定時任務是互聯網行業里最常用的服務之一,本文給大家介紹定時任務在我司的發展歷程。 linux系統中一般使用crontab命令來實現,在Java世界里,使用最廣泛的就是quartz了。我司
    發表于 07-18 17:38 ?0次下載
    <b class='flag-5'>定時任務</b>的發展史是怎么樣的

    SpringBoot如何實現動態增刪啟停定時任務

    在spring boot項目中,可以通過 @EnableScheduling 注解和@Scheduled注解實現定時任務,也可以通過SchedulingConfigurer接口來實現定時任務。但是
    的頭像 發表于 09-24 09:49 ?2961次閱讀
    SpringBoot如何實現動態增刪啟停<b class='flag-5'>定時任務</b>

    Python定時任務的實現方式

    在日常工作中,我們常常會用到需要周期性執行的任務,一種方式是采用 Linux 系統自帶的 crond 結合命令行實現。另外一種方式是直接使用Python。接下來整理的是常見的Python定時任務
    的頭像 發表于 10-08 15:20 ?5787次閱讀

    解析Golang定時任務庫gron設計和原理

    正巧,最近看到了 gron 這個開源項目,它是用 Golang 實現一個并發安全的定時任務庫。實現非常簡單精巧,代碼量也不多。今天我們就來一起結合源碼看一下,怎樣基于 Golang 的能力做出來一個【定時任務庫】。
    的頭像 發表于 12-15 13:57 ?1348次閱讀

    求一種SpringBoot定時任務動態管理通用解決方案

    SpringBoot的定時任務的加強工具,實現對SpringBoot原生的定時任務進行動態管理,完全兼容原生@Scheduled注解,無需對原本的定時任務進行修改
    的頭像 發表于 02-03 09:49 ?798次閱讀

    在Spring Boot中如何使用定時任務

    本文介紹在 Spring Boot 中如何使用定時任務,使用非常簡單,就不做過多說明了。
    的頭像 發表于 04-12 10:56 ?987次閱讀

    如何動態添加修改刪除定時任務

    如何動態添加修改刪除定時任務?那么我們一起看看具體怎么實現,先看下本節大綱: (1)思路說明; (2)代碼解析; (3)修改定時任務執行周期特別說明;
    的頭像 發表于 04-12 11:06 ?1093次閱讀

    Linux如何使用cron進行定時任務的操作

    按計劃執行命令對于計算機來說非常重要,因為假如我親自去執行一些任務的話,可能會因為多方面因素不能按時執行,所以定時任務就顯得非常重要了! cron就是一個能夠執行定時任務的命令,其實該命令本身不難,下面小編帶您詳細了解!
    的頭像 發表于 05-12 16:27 ?2070次閱讀

    python定時任務實踐

    由于程序需求,監測配置變化需要設置定時任務,每分鐘執行一次,對任務持久化要求不高,不需要時可以關閉定時任務
    的頭像 發表于 05-20 17:53 ?988次閱讀
    python<b class='flag-5'>定時任務</b>實踐

    Celery Beat 的周期調度機制及實現原理

    基于Django從制作一個簡單的周期任務開始,然后一步一步拆解 Celery Beat 的源代碼。 相關前置應用知識,可以閱讀以下文章: 實戰教程!
    的頭像 發表于 10-31 15:24 ?726次閱讀

    linux定時任務的用法總結

    習慣了使用 windows 的計劃任務,使用 linux 中的 crontab 管理定時任務時很不適應。
    的頭像 發表于 08-14 18:16 ?870次閱讀
    linux<b class='flag-5'>定時任務</b>的用法總結
    主站蜘蛛池模板: 免费爱爱视频| 2022天天操| 人人人人凹人人爽人人澡| 欧美成人自拍视频| 黄色污网站在线观看| 美女扒开尿口给男人爽的视频| 亚州第一视频| 国产成人精品日本| 特级全毛片| 久久国产精品岛国搬运工| 在线观看高清视频| 成人国产在线视频| 国产三级三级三级| 久久这里只有精品任你色| 人与禽性视频77777| 女人张开腿等男人桶免费视频| 久久99热精品免费观看无卡顿| 宅男666在线永久免费观看| 91大神视频网站| 六月丁香啪啪| 国产午夜视频在永久在线观看| 午夜视频在线观看一区二区| 国产看色免费| 国产日韩精品一区二区三区| 1314亚洲人成网站在线观看| brazzersvideosex欧美高清| 日本免费性| 日韩精品一级a毛片| 色第一页| 日本亚洲天堂网| 久久精品亚洲青青草原| 黄a级免费| 国产亚洲精品仙踪林在线播放| 六月婷婷在线| 丁香五六月婷婷| 久久天天躁夜夜躁狠狠躁2015| 波多野结衣在线免费视频| 国产人成高清视频观看| 小泽玛利亚在线观看123| 国产成人午夜片在线观看| 日本人69xxxxxxx69|