在线观看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

    文章

    3904

    瀏覽量

    65824
  • python
    +關注

    關注

    56

    文章

    4825

    瀏覽量

    86284
  • Django
    +關注

    關注

    0

    文章

    45

    瀏覽量

    10588
收藏 人收藏

    評論

    相關推薦
    熱點推薦

    關于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 ?3184次閱讀
    SpringBoot如何實現動態增刪啟停<b class='flag-5'>定時任務</b>

    Python定時任務的實現方式

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

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

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

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

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

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

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

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

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

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

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

    python定時任務實踐

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

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

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

    linux定時任務的用法總結

    習慣了使用 windows 的計劃任務,使用 linux 中的 crontab 管理定時任務時很不適應。
    的頭像 發表于 08-14 18:16 ?1091次閱讀
    linux<b class='flag-5'>定時任務</b>的用法總結
    主站蜘蛛池模板: 啪啪网站免费观看 | 26uuu另类亚洲欧美日本一 | 亚洲 成人 欧美 自拍 | 亚洲欧美高清在线 | 天天色天天射综合网 | 免费免费啪视频视频观看 | 又色又爽的视频 | 国产自产视频在线观看香蕉 | 亚洲网站在线观看 | 女的扒开尿口让男人桶 | 美女禁处 | 欲色天天 | 亚洲最大成人 | 丁香五婷婷 | 人成电影免费观看在线 | 国产欧美日韩综合精品一区二区 | caoporn成人免费公开 | 国产欧美一级片 | 特黄特色大片免费播放路01 | 午夜视频福利 | 午夜高清在线观看免费6 | 清纯唯美亚洲综合一区 | 国产精品久久久久久久成人午夜 | 欧美成人全部免费观看1314色 | 三级视频中文字幕 | 久久www免费人成看片色多多 | 四虎影院台湾辣妹 | 男女一进一出抽搐免费视频 | 福利99| 日本三级网站在线线观看 | 色天天干| 亚洲91| 天天做天天爽 | 性欧美高清强烈性视频 | 91一区二区三区四区五区 | 天堂网在线看 | 天堂网址 | 精品你懂的 | 年轻的护士3在线观看 | 好大好硬好长好爽a网站 | 1024手机在线观看你懂的 |