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

關(guān)于Django使用 django-celery-beat動(dòng)態(tài)添加定時(shí)任務(wù)的方法

 更新時(shí)間:2021年10月22日 10:29:50   作者:以王姓自居  
本文給大家介紹Django使用 django-celery-beat動(dòng)態(tài)添加定時(shí)任務(wù)的方法,安裝對(duì)應(yīng)的是celery版本,文中給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友參考下吧

版本信息

# 插件安裝 
Django==2.2.2
django-celery-beat==2.1.0
django-redis==4.8.0
mysqlclient==2.0.0
django-mysql==3.2.0
redis==3.2.1
uWSGI==2.0.17.1
django-redis-cache==2.1.0

安裝與配置

  1. 安裝上面的對(duì)應(yīng)的celery版本
  2. 配置settings.py
# django時(shí)區(qū)配置
TIME_ZONE = 'Asia/Shanghai'
# 如果USE_TZ設(shè)置為True時(shí),Django會(huì)使用系統(tǒng)默認(rèn)設(shè)置的時(shí)區(qū),此時(shí)的TIME_ZONE不管有沒有設(shè)置都不起作用
# 如果USE_TZ 設(shè)置為False,TIME_ZONE = 'Asia/Shanghai', 則使用上海的UTC時(shí)間。
USE_TZ = False

INSTALLED_APPS = (
    ...,
    'django_celery_beat',
)

# celery beat配置
# CELERY_ENABLE_UTC = False
CELERY_TIMEZONE = TIME_ZONE
DJANGO_CELERY_BEAT_TZ_AWARE = False
CELERY_BEAT_SCHEDULER = 'django-celery-beat.schedulers.DatabaseScheduler'
# celery 的啟動(dòng)工作數(shù)量設(shè)置
CELERY_WORKER_CONCURRENCY = 10
# 任務(wù)預(yù)取功能,會(huì)盡量多拿 n 個(gè),以保證獲取的通訊成本可以壓縮。
CELERYD_PREFETCH_MULTIPLIER = 20
# 有些情況下可以防止死鎖
CELERYD_FORCE_EXECV = True
# celery 的 worker 執(zhí)行多少個(gè)任務(wù)后進(jìn)行重啟操作
CELERY_WORKER_MAX_TASKS_PER_CHILD = 100
# 禁用所有速度限制,如果網(wǎng)絡(luò)資源有限,不建議開足馬力。
CELERY_DISABLE_RATE_LIMITS = True
# 設(shè)置代理人broker
CELERY_BROKER_URL = 'redis://127.0.0.1:6379/2'
# 指定 Backend
CELERY_RESULT_BACKEND = 'redis://127.0.0.1:6379/1'

生成數(shù)據(jù)庫

python manage.py migrate

# 遷移之后生成的表結(jié)構(gòu)
django_celery_beat.models.PeriodicTask 此模型定義要運(yùn)行的單個(gè)周期性任務(wù)。
django_celery_beat.models.IntervalSchedule 以特定間隔(例如,每5秒)運(yùn)行的計(jì)劃。
django_celery_beat.models.CrontabSchedule 與像在cron項(xiàng)領(lǐng)域的時(shí)間表 分鐘小時(shí)日的一周 DAY_OF_MONTH month_of_year
django_celery_beat.models.PeriodicTasks 此模型僅用作索引以跟蹤計(jì)劃何時(shí)更改

在工作目錄下配置celery.py

# -*- coding: utf-8 -*-
# @File:    celeryc.py
# @Content: celery定時(shí)任務(wù)配置


import os
from celery import Celery, platforms
from celery.schedules import crontab
from django.conf import settings

os.environ.setdefault("DJANGO_SETTINGS_MODULE", "django_server.settings")
app = Celery("django_server")
app.config_from_object("django.conf:settings", namespace="CELERY")
# 定時(shí)任務(wù)的存放位置
app.autodiscover_tasks(["monitoring.tasks", "wechat.tasks"])

創(chuàng)建tasks任務(wù)

from celery import shared_task

@shared_task
def alarm_monitor_task(**kwargs):
  print("定時(shí)任務(wù)?。。?)

創(chuàng)建定時(shí)任務(wù)

from django_celery_beat.models import PeriodicTask, IntervalSchedule

-----周期性任務(wù)
#  創(chuàng)建10分鐘的間隔 interval 對(duì)象
schedule, _ = IntervalSchedule.objects.update_or_create(every=10, period=IntervalSchedule.MINUTES)
# 如果任務(wù)存在就更新,不存在則創(chuàng)建
PeriodicTask.objects.update_or_create(
  defaults={
    "interval": schedule,  # 上面創(chuàng)建10分鐘的間隔 interval 對(duì)象
    "task": "monitoring.tasks.alarm_monitor_task",  # 指定需要周期性執(zhí)行的任務(wù)
    "args"=json.dumps(['arg1', 'arg2']),
    "kwargs": json.dumps({"a": 1, "b": 2}, ensure_ascii=False)  # 傳入的參數(shù)
  },
  name="定時(shí)任務(wù)-task",
)
# 周期性任務(wù)可選參數(shù)
IntervalSchedule.DAYS 固定間隔天數(shù)
IntervalSchedule.HOURS 固定間隔小時(shí)數(shù)
IntervalSchedule.MINUTES 固定間隔分鐘數(shù)
IntervalSchedule.SECONDS 固定間隔秒數(shù)
IntervalSchedule.MICROSECONDS 固定間隔微秒


----Crontab 周期性任務(wù)
from django_celery_beat.models import CrontabSchedule, PeriodicTask
# 創(chuàng)建間隔30分鐘執(zhí)行的任務(wù)
crontab, _ = CrontabSchedule.objects.update_or_create(
  minute="*/30",
  hour="*",
  day_of_week="*",
  day_of_month='*',
  month_of_year='*',
  timezone=pytz.timezone("Asia/Shanghai"),
)
# 任務(wù)存在則更新,不存在創(chuàng)建
PeriodicTask.objects.update_or_create(
  name=task_name,
  defaults={
    "kwargs": json.dumps(kwargs, ensure_ascii=False),
    "task": "wechat.tasks.subscribe_task",
    "crontab": crontab,
  },
)

# 刪除任務(wù)
task = PeriodicTask.objects.filter(name__startswith=sub_id)
if task:
    task.update(enabled=False)
    task.delete()
    
    
# 暫停當(dāng)前任務(wù)
tasks = PeriodicTask.objects.filter(name__startswith=sub_id)
if tasks:
    tasks.update(enabled=True if status else False)

運(yùn)行任務(wù)

# 啟動(dòng)任務(wù) work
celery -A django_server worker -l INFO --logfile=/var/log/dec_server/worker.log

# 啟動(dòng)定時(shí)器觸發(fā) beat
celery -A django_server beat -l info --scheduler django_celery_beat.schedulers:DatabaseScheduler --logfile=/var/log/dec_server/beat.log

Tips:

參考鏈接:

https://github.com/celery/django-celery-beat

https://pypi.org/project/django-celery-beat/

到此這篇關(guān)于Django使用 django-celery-beat動(dòng)態(tài)添加定時(shí)任務(wù)的文章就介紹到這了,更多相關(guān)django celery beat動(dòng)態(tài)添加定時(shí)任務(wù)內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • python練習(xí)之曾經(jīng)很火的小人畫愛心表白代碼

    python練習(xí)之曾經(jīng)很火的小人畫愛心表白代碼

    小編有個(gè)好兄弟最近在追妹子,跟妹子打得火熱!就差臨門一腳了,這一jio我?guī)兔ρa(bǔ)上去了!他問有沒有什么酷炫的表白方式,可以給人心動(dòng)的趕jio,表白的方式有許多種今天小編來教大家一個(gè)之前很火的小人畫愛心表白代碼
    2021-09-09
  • Python實(shí)現(xiàn)圖數(shù)據(jù)處理的完整指南

    Python實(shí)現(xiàn)圖數(shù)據(jù)處理的完整指南

    圖是一種非常重要的數(shù)據(jù)結(jié)構(gòu),在Python中,我們可以使用鄰接矩陣來表示圖,這篇文章主要為大家介紹了Python實(shí)現(xiàn)圖數(shù)據(jù)處理的相關(guān)知識(shí),需要的可以參考下
    2024-04-04
  • python自動(dòng)化之Ansible的安裝教程

    python自動(dòng)化之Ansible的安裝教程

    這篇文章主要介紹了python自動(dòng)化之Ansible的安裝方法,結(jié)合實(shí)例形式分析了自動(dòng)化運(yùn)維工具Ansible的安裝步驟及相關(guān)操作命令,需要的朋友可以參考下
    2019-06-06
  • python包裝和授權(quán)學(xué)習(xí)教程

    python包裝和授權(quán)學(xué)習(xí)教程

    包裝是指對(duì)一個(gè)已經(jīng)存在的對(duì)象進(jìn)行系定義加工,實(shí)現(xiàn)授權(quán)是包裝的一個(gè)特性,下面這篇文章主要給大家介紹了關(guān)于python包裝和授權(quán)的相關(guān)資料,文中通過實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2023-06-06
  • Pandas時(shí)間序列重采樣(resample)方法中closed、label的作用詳解

    Pandas時(shí)間序列重采樣(resample)方法中closed、label的作用詳解

    這篇文章主要介紹了Pandas時(shí)間序列重采樣(resample)方法中closed、label的作用詳解,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-12-12
  • python過濾字符串中不屬于指定集合中字符的類實(shí)例

    python過濾字符串中不屬于指定集合中字符的類實(shí)例

    這篇文章主要介紹了python過濾字符串中不屬于指定集合中字符的類,涉及Python針對(duì)字符串與集合的相關(guān)操作技巧,需要的朋友可以參考下
    2015-06-06
  • Python中無限元素列表的實(shí)現(xiàn)方法

    Python中無限元素列表的實(shí)現(xiàn)方法

    這篇文章主要介紹了Python中無限元素列表的實(shí)現(xiàn)方法,很實(shí)用的功能,需要的朋友可以參考下
    2014-08-08
  • Python3 維護(hù)有序列表bisect的使用

    Python3 維護(hù)有序列表bisect的使用

    Python3中的bisect模塊提供了一種高效的方式來在有序列表中進(jìn)行二分查找和插入操作,下面就來介紹一下,具有一定的參考價(jià)值,感興趣的可以了解一下
    2025-01-01
  • 基于Python 裝飾器裝飾類中的方法實(shí)例

    基于Python 裝飾器裝飾類中的方法實(shí)例

    下面小編就為大家分享一篇基于Python 裝飾器裝飾類中的方法實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2018-04-04
  • Python設(shè)計(jì)模式之裝飾模式實(shí)例詳解

    Python設(shè)計(jì)模式之裝飾模式實(shí)例詳解

    這篇文章主要介紹了Python設(shè)計(jì)模式之裝飾模式,結(jié)合實(shí)例形式詳細(xì)分析了裝飾模式的概念、原理并結(jié)合Python實(shí)例形式分析了裝飾模式的相關(guān)使用技巧,需要的朋友可以參考下
    2019-01-01

最新評(píng)論

晴隆县| 西充县| 南阳市| 阆中市| 寿阳县| 开鲁县| 新闻| 广饶县| 石泉县| 汽车| 英吉沙县| 平潭县| 靖安县| 庆元县| 临泉县| 北票市| 那曲县| 讷河市| 固原市| 鹤峰县| 六安市| 江津市| 平遥县| 靖宇县| 新化县| 凤阳县| 磐安县| 马山县| 南城县| 农安县| 杨浦区| 阳山县| 镇江市| 阆中市| 洛隆县| 黄石市| 英德市| 游戏| 三河市| 景谷| 新巴尔虎左旗|