前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Django的celery通过配置添加周期性任务

Django的celery通过配置添加周期性任务

作者头像
IT不难
发布2023-11-17 13:55:35
1450
发布2023-11-17 13:55:35
举报
文章被收录于专栏:IT不难技术家园

前言

以前都是通过函数,动态添加周期性任务。新的项目比较简单。直接在项目启动时加载周期性任务,加载后也不变动。

llqdb4rv.png
llqdb4rv.png

代码

编辑etcman/celery.py,新增代码

代码语言:javascript
复制
#周期执行
app.conf.beat_schedule = {
    #'project-autodiscover-host-task-every-60-minutes': {
    #    'task': 'project.tasks.project_autodiscover_host_task',
    #    'schedule': timedelta(minutes=60),
    #},
    'project-autodiscover-host-task-every-2-hours': {
        'task': 'project.tasks.project_autodiscover_host_task',
        'schedule': timedelta(hours=2),
    },
    'monitor-autodiscover-open-ports-task-every-6-hours': {
        'task': 'monitor.tasks.monitor_autodiscover_open_ports_task',
        'schedule': timedelta(hours=6),
    },
}

函数

在模块下的tasks.py文件内定义,如

代码语言:javascript
复制
from etcman.celery import app
from .models import *
from .utils import *

from loguru import logger

@app.task
def project_autodiscover_host_task():
    """
    自动发现在线IP
    """
    #记录日志
    logger.info('自动发现在线主机任务开始')

    projects = Project.objects.all()
    for project in projects:
        ipranges = IPRange.objects.filter(project=project)
        for iprange in ipranges:
            if iprange.ip_type == 'ipv4':
                check_ip_alive_ip(iprange.ip_range, project)

启动

代码语言:javascript
复制
celery -A etcman worker -l info -B
llqdcn46.png
llqdcn46.png
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2023年08月25日,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 前言
  • 代码
  • 函数
  • 启动
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档