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

Django+Celery實現(xiàn)動態(tài)配置定時任務(wù)的方法示例

 更新時間:2020年05月26日 08:30:21   作者:blue_boy  
這篇文章主要介紹了Django + Celery 實現(xiàn)動態(tài)配置定時任務(wù)的方法示例,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧

哈嘍,今天給大家分享一篇Django+Celery實現(xiàn)動態(tài)配置定時任務(wù),因為最近也是無意間看到一位大佬關(guān)于這塊的文章,然后自己覺得不錯,也想學(xué)習(xí)寫一下,然后最終實現(xiàn)功能是在前端頁面統(tǒng)一管理計劃任務(wù),大家可以在admin管理頁面設(shè)置,也可以在自己寫的前端頁面刪除添加編輯,實時生效,還可以監(jiān)控這些監(jiān)控任務(wù)是否運行成功失敗。

補充:如果大家對celery不熟悉的話,建議先學(xué)習(xí)celery

一、安裝

1.在Linux系統(tǒng)上安裝模塊

celery (3.1.26.post2)
celery-with-redis (3.0)
redis (2.10.6)
Django (2.1.10)
django-celery (3.3.1)

2.遷移生成表

python manage.py migrate

3.查看生成的表,這幾張表是上面執(zhí)行命令后生成的

二、配置

1.添加apps

INSTALLED_APPS = [
  'django.contrib.admin',
  'django.contrib.auth',
  'django.contrib.contenttypes',
  'django.contrib.sessions',
  'django.contrib.messages',
  'django.contrib.staticfiles',
  'djcelery',  #這是要添加的
]

2.配置django時區(qū)

LANGUAGE_CODE = 'en-us'
TIME_ZONE = 'Asia/Shanghai'
USE_I18N = True
USE_L10N = True
USE_TZ = False

3.Celery配置

BROKER_URL = 'redis://localhost:6379' #代理人
CELERY_RESULT_BACKEND = 'redis://localhost:6379' #結(jié)果存儲地址
CELERY_ACCEPT_CONTENT = ['application/json'] #指定任務(wù)接收的內(nèi)容序列化類型
CELERY_TASK_SERIALIZER = 'json' #任務(wù)序列化方式
CELERY_RESULT_SERIALIZER = 'json' #任務(wù)結(jié)果序列化方式
CELERY_TASK_RESULT_EXPIRES = 12 * 30 #超過時間
CELERY_MESSAGE_COMPRESSION = 'zlib' #是否壓縮
CELERYD_CONCURRENCY = 4 #并發(fā)數(shù)默認已CPU數(shù)量定
CELERYD_PREFETCH_MULTIPLIER = 4 #celery worker 每次去redis取任務(wù)的數(shù)量
CELERYD_MAX_TASKS_PER_CHILD = 3 #每個worker最多執(zhí)行3個任務(wù)就摧毀,避免內(nèi)存泄漏
CELERYD_FORCE_EXECV = True #可以防止死鎖
CELERY_ENABLE_UTC = False #關(guān)閉時區(qū)
CELERYBEAT_SCHEDULER = 'djcelery.schedulers.DatabaseScheduler' # 定時任務(wù)調(diào)度器

4.在你項目的app下面配置celery.py

import os
from celery import Celery,platforms
from django.conf import settings
os.environ.setdefault('DJANGO_SETTINGS_MODULE','blog.settings')
app = Celery('blog')
app.config_from_object('django.conf:settings')
app.autodiscover_tasks(lambda: settings.INSTALLED_APPS)
platforms.C_FORCE_ROOT = True

@app.task(bind=True)
def debug_task(self):
  print('Request: {0!r}'.format(self.request))

5.配置剛才app下面的__init__.py文件

from __future__ import absolute_import
from .celery import app as celery_app

6.在app下面創(chuàng)建一個tasks.py文件

from blog.celery import app
@app.task()
def get_date(x,y,s):  #這里的函數(shù)留意一下,后面會用到
  print(s)
  return x + y

@app.task()
def get_task():
  return 'test'

@app.task()
def get_command_task():
  return 'success'

三、啟動

1.進入你項目下面,執(zhí)行啟動worker,Worker是執(zhí)行任務(wù)的單元,它實時監(jiān)控消息隊列,如果有任務(wù)就獲取任務(wù)并執(zhí)行它。

celery -A autoops worker -l info

2.進入你項目下面,執(zhí)行啟動beat,beat是定時把這個任務(wù)扔到隊列中

celery -A autoops beat -l info  

3.啟動你的django項目

python manage.py runserver 192.168.10.133:8001

4.頁面展示

4.1這個是admin頁面下的,然后我自己重新寫了,大家也可以自己寫一個,admin和我自己寫的頁面實現(xiàn)的功能其實是一模一樣的。

4.2.對應(yīng)admin頁面的crontabs

添加周期

編輯修改周期

5.tasks任務(wù)

5.1.大家可以看到我添加了一個名為測試的任務(wù),每隔一分鐘執(zhí)行一次,任務(wù)模板其實就是你寫的tasks文件里面函數(shù)

看一下worker進程日志輸出

四、監(jiān)控計劃任務(wù)

celery作為一個分布式異步任務(wù)隊列管理工具,通過界面化的方式來進行管控任務(wù)的執(zhí)行狀態(tài)和查看任務(wù)執(zhí)行結(jié)果

flower作為web頁面來管理celery后臺任務(wù),和任務(wù)隊列是隔離的,也就是flower的運行與否并不會影響到任務(wù)隊列的真正執(zhí)行,但是flower中可以通過API接口來管理celery中的任務(wù)執(zhí)行。

4.1安裝flower,監(jiān)控celery計劃任務(wù)

pip3 install flower==0.9.2 -i http://pypi.douban.com/simple --trusted-host pypi.douban.com
pip install tornado==5.1.1
celery flower -A blog --port=5555 #進入項目目錄啟動flower

4.2打開瀏覽器,輸入http://ip:5555 查看

Name: 表示該任務(wù)的名稱,默認規(guī)則為該函數(shù)的路徑規(guī)則,例如 {模塊名}.{文件名}.{函數(shù)名}
UUID: 表示一個唯一字符串ID用于表示該任務(wù)
State: 表示該任務(wù)的狀態(tài),包括: SUCCESS / FAILURE / STARTED / RECEIVED
SUCCESS 表示該任務(wù)執(zhí)行完畢且成功
FAILURE 表示該任務(wù)執(zhí)行失敗
STARTED 表示該任務(wù)正在執(zhí)行
RECEIVED 表示該任務(wù)在worker中,只是被接收而已
args: 表示該任務(wù)的列表參數(shù)
kwargs: 表示該任務(wù)的字典參數(shù)
Result: 表示該任務(wù)函數(shù)的返回結(jié)果
Received: 表示該任務(wù)在worker接收到的時間
Started: 表示該任務(wù)在worker開始執(zhí)行的時間
Runtime: 表示該任務(wù)在worker真正執(zhí)行的耗時(單位:秒)
Worker: 表示該任務(wù)所在的worker名稱

總結(jié):django+celery實現(xiàn)的定時任務(wù)還是不錯的,你可以在前端上查看管理所有定時任務(wù),實時修改生效刪除和禁用,所以有需求的話可以去試試。下次再分享啦

到此這篇關(guān)于Django+Celery實現(xiàn)動態(tài)配置定時任務(wù)的方法示例的文章就介紹到這了,更多相關(guān)Django Celery動態(tài)配置定時任務(wù)內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 一文教你解決所有Python中文亂碼問題

    一文教你解決所有Python中文亂碼問題

    我們在編寫代碼時總是遇到各種中文亂碼的問題,所以本文就來為大家總結(jié)一下遇到的中文亂碼問題和對應(yīng)的解決方案,以及為什么會出現(xiàn)中文亂碼的問題,希望對大家有所幫助
    2023-12-12
  • Python利用Pandas進行數(shù)據(jù)分析的方法詳解

    Python利用Pandas進行數(shù)據(jù)分析的方法詳解

    Pandas是最流行的用于數(shù)據(jù)分析的?Python?庫。它提供高度優(yōu)化的性能。本文將利用Python進行數(shù)據(jù)分析,感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下
    2022-09-09
  • python實現(xiàn)圖像高斯金字塔的示例代碼

    python實現(xiàn)圖像高斯金字塔的示例代碼

    這篇文章主要介紹了python實現(xiàn)圖像高斯金字塔的示例代碼,幫助大家更好的利用python處理圖片,感興趣的朋友可以了解下
    2020-12-12
  • python調(diào)用百度API實現(xiàn)人臉識別

    python調(diào)用百度API實現(xiàn)人臉識別

    這篇文章主要介紹了python調(diào)用百度API實現(xiàn)人臉識別,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-11-11
  • 在Python的gevent框架下執(zhí)行異步的Solr查詢的教程

    在Python的gevent框架下執(zhí)行異步的Solr查詢的教程

    這篇文章主要介紹了在Python的gevent框架下執(zhí)行異步的Solr查詢的教程,Solr請求在處理I/O方面較為高效,需要的朋友可以參考下
    2015-04-04
  • 11個并不被常用但對開發(fā)非常有幫助的Python庫

    11個并不被常用但對開發(fā)非常有幫助的Python庫

    這篇文章主要介紹了11個并不被常用但對開發(fā)非常有幫助的Python庫,這些庫大都被放在Github上開源、并且經(jīng)過一段時間的編寫和維護,對Python開發(fā)有一定的幫助,需要的朋友可以參考下
    2015-03-03
  • Python+SymPy實現(xiàn)秒解微積分詳解

    Python+SymPy實現(xiàn)秒解微積分詳解

    SymPy是一個Python庫,專注于符號數(shù)學(xué),它的目標是成為一個全功能的計算機代數(shù)系統(tǒng),同時保持代碼簡潔、易于理解和擴展。本文將利用SymPy實現(xiàn)四行代碼秒解微積分,感興趣的可以學(xué)習(xí)一下
    2022-05-05
  • python腳本內(nèi)運行l(wèi)inux命令的方法

    python腳本內(nèi)運行l(wèi)inux命令的方法

    這篇文章主要介紹了python腳本內(nèi)運行l(wèi)inux命令的方法,實例分析了Python基于subprocess模塊操作Linux命令的相關(guān)技巧,需要的朋友可以參考下
    2015-07-07
  • Python 中迭代器與生成器實例詳解

    Python 中迭代器與生成器實例詳解

    這篇文章主要介紹了Python 中迭代器與生成器實例詳解的相關(guān)資料,需要的朋友可以參考下
    2017-03-03
  • python刪除指定列或多列單個或多個內(nèi)容實例

    python刪除指定列或多列單個或多個內(nèi)容實例

    這篇文章主要介紹了python刪除指定列或多列單個或多個內(nèi)容實例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-06-06

最新評論

左云县| 米林县| 佛冈县| 阿坝县| 武穴市| 永新县| 南溪县| 塔城市| 林周县| 汶上县| 广西| 洞口县| 通州市| 泰州市| 开平市| 安顺市| 慈利县| 宁陕县| 东平县| 苏尼特左旗| 嘉禾县| 怀柔区| 明星| 稻城县| 德州市| 灌阳县| 塔河县| 大足县| 灵宝市| 花垣县| 大理市| 澄迈县| 奎屯市| 集贤县| 桃江县| 石景山区| 特克斯县| 漳州市| 胶南市| 博野县| 威信县|