django中celery的定時任務(wù)使用
話不多說言歸正傳
1.celery 的介紹
1.1celery的基本介紹
celery是基于python實(shí)現(xiàn)的一個異步任務(wù)的調(diào)用工具,同時還是一個任務(wù)隊(duì)列,主要用于處理耗時的任務(wù)。
celery也被稱為芹菜。
celery架構(gòu)由三個模塊組成:消息中間件,任務(wù)執(zhí)行單元和任務(wù)執(zhí)行結(jié)果儲存 組成。
其實(shí)那在剛接觸的時候小編的理解是 :
老板把地皮交給包工頭去干 讓包工頭把房子建好 然后包工頭找了工人 把任務(wù)分配給工人讓工人去干 最后工人蓋好房子老板驗(yàn)收(這是小編自己的理解也就適合入門)
1.2什么是celery beat
celery支持定時任務(wù),設(shè)定好任務(wù)的執(zhí)行時間,
celery就會定時自動幫你執(zhí)行, 這個定時任務(wù)模塊叫celery beat
2.celery定時任務(wù)的配置
__init__.py
里面主要是celery初始化配置
from datetime import timedelta from celery import Celery import os import django os.environ.setdefault("DJANGO_SETTINGS_MODULE", "自己的項(xiàng)目名.settings") django.setup() celery_app = Celery('mycelery') #讀取celery 的配置 celery_app.config_from_object('celery_task.config') # 定時任務(wù) # 文件夾名.文件名 celery_app.autodiscover_tasks(['celery_task.times']) celery_app.conf.update( CELERYBEAT_SCHEDULE={ 'sum-task': { # 文件夾名.文件名.方法名 'task': 'celery_task.times.my_con', # 多少秒執(zhí)行一次(eg:5秒一執(zhí)行) 'schedule': timedelta(seconds=5), # 這是傳入my_con方法中的參數(shù) 'args': (5, 6) }, 'sum-task1': { 'task': 'celery_task.times.my_print', 'schedule': timedelta(seconds=3), 'args': () }, } )
config.py
""" celery 配置 """ 消息中間件 broker BROKER_URL = 'redis://xx.xx.xx.xx:6379/11' 任務(wù)結(jié)果存儲 results backend CELERY_RESULT_BACKEND = 'redis://xx.xx.xx.xx:6379/12' # 時區(qū) CELERY_TIMEZONE = 'Asia/Shanghai' # 導(dǎo)入指定的任務(wù)模塊 CELERY_IMPORTS = ( 'celery_task.tasks' )
task.py 里面寫的是異步任務(wù)就不展示了
times.py
里面寫的是定時任務(wù)
# 定時任務(wù) import time from celery_task import celery_app @celery_app.task() def my_con(x,y): print(x,y) print('x和y相加') return x+y @celery_app.task() def my_print(): print('22222222')
3.celery 啟動命令
異步任務(wù)的啟動命令:celery -A 任務(wù)名 worker -l info -P eventlet
定時任務(wù)的啟動命令:celery -A 任務(wù)名 beat -l info
注意:要先啟動異步任務(wù),在啟動定時任務(wù)
總結(jié)
以上為個人經(jīng)驗(yàn),希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
Python+drawpad實(shí)現(xiàn)CPU監(jiān)控小程序
這篇文章主要為大家詳細(xì)介紹了如何利用Python+drawpad實(shí)現(xiàn)一個簡單的CPU監(jiān)控小程序,文中示例代碼講解詳細(xì),感興趣的小伙伴可以嘗試一下2022-08-08python 獲取毫秒數(shù),計(jì)算調(diào)用時長的方法
今天小編就為大家分享一篇python 獲取毫秒數(shù),計(jì)算調(diào)用時長的方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2019-02-02python實(shí)現(xiàn)斐波那契遞歸函數(shù)的方法
這篇文章主要介紹了python實(shí)現(xiàn)斐波那契遞歸函數(shù)的方法,通過一個非常簡單的遞歸函數(shù)加以實(shí)現(xiàn),需要的朋友可以參考下2014-09-09Python+Selenium定位不到元素常見原因及解決辦法(報(bào):NoSuchElementException)
這篇文章主要介紹了Python+Selenium定位不到元素常見原因及解決辦法(報(bào):NoSuchElementException),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2021-03-03python 內(nèi)置函數(shù)-range()+zip()+sorted()+map()+reduce()+filte
這篇文章主要介紹了python 內(nèi)置函數(shù)-range()+zip()+sorted()+map()+reduce()+filter(),想具體了解函數(shù)具體用法的小伙伴可以參考一下下面的介紹,希望對你有所幫助2021-12-12python中浮點(diǎn)數(shù)比較判斷!為什么不能用==(推薦)
這篇文章主要介紹了python中浮點(diǎn)數(shù)比較判斷!為什么不能用==,本文給大家分享問題解決方法,需要的朋友可以參考下2023-09-09