国产成人精品久久免费动漫-国产成人精品天堂-国产成人精品区在线观看-国产成人精品日本-a级毛片无码免费真人-a级毛片毛片免费观看久潮喷

您的位置:首頁技術(shù)文章
文章詳情頁

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

瀏覽:107日期:2024-09-30 14:52:40

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

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

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

一、安裝

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í)行命令后生成的

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

二、配置

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 = TrueUSE_L10N = TrueUSE_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ù)默認(rèn)已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 osfrom celery import Celery,platformsfrom django.conf import settingsos.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_importfrom .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.進(jìn)入你項目下面,執(zhí)行啟動worker,Worker是執(zhí)行任務(wù)的單元,它實時監(jiān)控消息隊列,如果有任務(wù)就獲取任務(wù)并執(zhí)行它。

celery -A autoops worker -l info

2.進(jìn)入你項目下面,執(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)的功能其實是一模一樣的。

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

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

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

添加周期

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

編輯修改周期

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

5.tasks任務(wù)

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

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

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

看一下worker進(jìn)程日志輸出

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

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

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

flower作為web頁面來管理celery后臺任務(wù),和任務(wù)隊列是隔離的,也就是flower的運(yùn)行與否并不會影響到任務(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.compip install tornado==5.1.1celery flower -A blog --port=5555 #進(jìn)入項目目錄啟動flower

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

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

Name: 表示該任務(wù)的名稱,默認(rèn)規(guī)則為該函數(shù)的路徑規(guī)則,例如 {模塊名}.{文件名}.{函數(shù)名}UUID: 表示一個唯一字符串ID用于表示該任務(wù)State: 表示該任務(wù)的狀態(tài),包括: SUCCESS / FAILURE / STARTED / RECEIVEDSUCCESS 表示該任務(wù)執(zhí)行完畢且成功FAILURE 表示該任務(wù)執(zhí)行失敗STARTED 表示該任務(wù)正在執(zhí)行RECEIVED 表示該任務(wù)在worker中,只是被接收而已a(bǔ)rgs: 表示該任務(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)容請搜索好吧啦網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持好吧啦網(wǎng)!

標(biāo)簽: Django
相關(guān)文章:
主站蜘蛛池模板: 亚洲精品国产第一区二区多人 | 免费看一级欧美毛片 | 亚洲精品国产手机 | 成人精品一级毛片 | 免费久久久久 | 久久久久亚洲日日精品 | 亚洲一区二区三 | 性欧美高清极品xx | 欧美一区二区免费 | 精品一区二区三区四区在线 | 91免费版网站 | 一级片视频免费观看 | 国产成人高清一区二区私人 | 99re久久精品国产首页2020 | 亚洲日韩中文字幕天堂不卡 | 九九在线视频 | 一本色道久久综合亚洲精品加 | 欧美日韩视频一区二区三区 | 99福利网 | 久久免费特黄毛片 | 日韩国产欧美一区二区三区在线 | 久久精品久久精品 | 日韩欧美一级 | 免费成年人在线观看视频 | 久久九九精品视频 | 国产精品二区页在线播放 | 亚洲成人在线视频 | 亚洲综合视频网 | 国产粗大猛烈18p | 日韩久久久精品中文字幕 | 午夜毛片不卡高清免费 | 亚洲精品国产综合久久一线 | 三级黄a| 免费国产成人α片 | 拍拍拍又黄又爽无挡视频免费 | 日韩一级a毛片欧美一级 | 欧美视频一区二区三区在线观看 | 日韩一级一片 | 亚洲综合久久久久久中文字幕 | 三级黄色毛片网站 | 成年免费大片黄在线观看一 |