首页 > 其他分享 >django-celery-beat插件使用

django-celery-beat插件使用

时间:2023-10-04 12:11:27浏览次数:48  
标签:插件 beat PeriodicTask django celery models 任务

该插件从 Django 管理界面管理celery的定期任务,您可以在其中动态****创建、编辑和删除定期任务以及它们的运行频率。

django-celery-beat提供了几种添加定时或周期性任务的方式,

  • 预先在在settings.py中添加好定时任务。
  • 通过Django admin后台动态添加。(实际上就是操作model模型类)
  • 通过提供了model模型类操作并添加。

安装和基本使用

  1. 安装
pip install django-celery-beat
  1. django_celery_beat 模块添加到 Django 项目的 settings.py 中的 INSTALLED_APPS 中:
INSTALLED_APPS = (
    ...,
    'django_celery_beat',
)
  1. 应用 Django 数据库迁移以便创建必要的表
python manage.py migrate django_celery_beat

  1. 使用 django_celery_beat.schedulers:DatabaseScheduler 调度程序启动 celery beat 服务。
$ celery -A proj beat -l INFO --scheduler django_celery_beat.schedulers:DatabaseScheduler [-P eventlet]

如果觉得麻烦可以提前设置好celery的beart-scheduler选项:

https://docs.celeryq.dev/en/latest/userguide/configuration.html#beat-scheduler

或者可以用下面这个命令方式,可以快捷指定为django_celery_beat.schedulers:DatabaseScheduler

$ celery -A [project-name] beat -l info -S django [-P eventlet]

开发环境下,为了方便,可以将worker和beat一起用一条命令启动(生产环境不允许这样做!!!!)【windows不支持!】

$ celery -A [project-name] worker --beat --scheduler django --loglevel=info [-P eventlet]
# windows 记得用eventlet来启动,不然挂挂...

  1. 访问django Admin后台,就可以直接管理任务了!

注意:celery.backend_cleanup任务是自动生成的,不要去删他...是用来清除存储在result_backend中的任务执行结果。

关于时区的重要警告

如果您更改 Django TIME_ZONE 选项设置,您的定期任务计划仍将基于旧时区。

要解决这个问题,您必须重置每个定期任务的“上次运行时间”:

>>> from django_celery_beat.models import PeriodicTask, PeriodicTasks
>>> PeriodicTask.objects.all().update(last_run_at=None)
>>> for task in PeriodicTask.objects.all():
>>>     PeriodicTasks.changed(task)

Note:这将重置状态,就好像定期任务以前从未运行过一样。

操作django_celery_beat提供的model动态添加任务

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

https://docs.celeryq.dev/en/latest/userguide/periodic-tasks.html

https://django-celery-beat.readthedocs.io/en/latest/

模型:

  • django_celery_beat.models.PeriodicTask
    • 该模型定义了要运行的单个周期性任务,与下面4个调度器模型一起使用。
  • django_celery_beat.models.IntervalSchedule
    • 用于定义时间间隔,比如,每2分钟、每1小时。
  • django_celery_beat.models.CrontabSchedule
    • 用于定义类似linux的crontab任务(conrtab实际上可以涵盖IntervalSchedule
  • django_celery_beat.models.SolarSchedule
    • 用于定义:基于太阳升起、日落、经度纬度来定义任务执行【一般用不上...】
  • django_celery_beat.models.ClockedSchedule
    • 定义指定日期时间执行任务。比如:我要2023年1月1号,10点10分30秒执行。

查看所有周期性任务:

>>> from django_celery_beat.models import CrontabSchedule, PeriodicTask
>>> PeriodicTask.objects.all()
<PeriodicTaskQuerySet [<PeriodicTask: test add: 每 分钟>, <PeriodicTask: celery.backend_cleanup: 0 4 * * * (m/h/dM/MY/d) Asia/Shanghai>, <PeriodicTask: add every 2min gen index page: */2 * * * * (m/h/dM/MY/d) Asia/Shanghai>]>

标签:插件,beat,PeriodicTask,django,celery,models,任务
From: https://www.cnblogs.com/juelian/p/17742100.html

相关文章

  • flower插件-监视celery
    安装和使用:https://flower.readthedocs.io/en/latest/install.html#installationhttps://github.com/mher/flower/tree/master/examplescelery相关配置:#发送与任务相关的事件,以便可以使用flower之类的工具来监控任务#或者在启动worker服务时,使用-E参数。worker_send_task_......
  • idea插件开发(1)-第一个Idea插件
    idea插件开发和传统的java项目不太一样,开发前有三个限制:Gradle:类似maven的构建工具,建议采用V8.1+版本;javaSDK:正常要求java11或java17版本;IntellijPlatformSDK:需要注意这是插件开发的sdk,不是javaSDK。建议下载JetBrainsRuntimeversion17.0.6一、开发前准备知识1、What'sIntell......
  • Jenkins List Git Branches插件 构建选择指定git分支
    ListGitBranchesParameter|JenkinspluginAddsabilitytochoosefromgitrepositoryrevisionsortagshttps://plugins.jenkins.io/list-git-branches-parameter/1、安装组件  ListGitBranches2、验证功能1)新建任务 2)新增构建参数 3)选择git仓库我这里选择gitee,其他......
  • Better Input:VSCode插件开发指南
    更好的阅读体验?0.准备工作先安装(更新)node.js和nmpnode更新去Node.js官网下载最新版本,然后重新安装在原来的安装路径下(第一次下载可只进行第三步)node-v查看当前版本是否是最新版本wherenode查看之前的安装路径去Node.js官网下载LTS版本执行node-v查看现......
  • mysql在安装group_replication插件时,报错ERROR 1126"can't open share library xxxx g
    问题描述:mysql在安装group_replication插件时,报错ERROR1126"can'topensharelibraryxxxxgroup_replication.so",如下所示:数据库:MySQL8.0.27系统:rhel7.31、问题重现mysql>INSTALLPLUGINgroup_replicationSONAME'group_replication.so';ERROR1126(HY0......
  • jenkins教程:Publish Over SSH插件远程ssh执行命令
    PublishOverSSHjenkins构建完成后需要一键发布,结构如下A服务器svnB服务器jenkinsC服务器应用服务器B从A拉取代码后打包成war,然后向C服务器拷贝war包这里解决的就是远程拷贝问题1.首先安装jenkinsSSH插件打开Jenkins的“系统管理>管理插件”,选择“可选插件”,在输入框中输入“......
  • CAD快捷键命令大全:加载插件、图层管理器及变动快捷键
    1:cad加载插件快捷键命令cad加载插件快捷键命令在AutoCAD(2016)中,通过快捷键命令"ap"可以加载插件。加载方法:打开CAD,输入加载插件快捷键命令"ap",回车。进入插件加载对话框。选择永久性加载来一次性加载插件,不需二次加载。点击添加,找到插件位置,选中插件,点击打开。添加进来后,点击关闭......
  • 打造个人的代码编辑器,27 个实用的 Visual Studio Code 扩展插件,让工作效率翻倍
    打造个人的代码编辑器,27个实用的VisualStudioCode扩展插件,让工作效率翻倍。VisualStudioCode(VSCode)是一个知名且评价很高的代码编辑器,具有大量功能和扩展以增强开发体验。使用VSCode的主要好处之一是它的灵活性,允许开发人员根据他们的特定需求对其进行自定义。此外,V......
  • 支持复制粘贴进行翻译的chrome浏览器插件
    下载安装https://chrome.google.com/webstore/detail/translator-dictionary-acc/bebmphofpgkhclocdbgomhnjcpelbenh/related?hl=zh-CN界面设置常用语言历史记录......
  • VScode中下载了插件但是无法找到SSH Target连接服务器的解决方法(CANNOT find SSH Targ
    VSCode版本vscodeversion:(version1.82)已下载扩展installedextensions:Remote-SSHv0.106.4Remote-SSH:EditingConfigurationFilesv0.86.0RemoteDevelopmentv0.24.0WSLv0.81.3几天前我从pycharm转战vscode,在连接服务器时遇到了一些问题。根据一些较为古早的......