首页 > 其他分享 >django通过celery定时任务

django通过celery定时任务

时间:2023-05-12 10:44:58浏览次数:38  
标签:status task get schedule django celery import 定时

settings.py

 
# Broker配置,使用Redis作为消息中间件
BROKER_URL = 'redis://127.0.0.1:6379/0'

# BACKEND配置,这里使用redis
CELERY_RESULT_BACKEND = 'redis://127.0.0.1:6379/0'

# 结果序列化方案
CELERY_RESULT_SERIALIZER = 'json'

# 任务结果过期时间,秒
CELERY_TASK_RESULT_EXPIRES = 60 * 60 * 24



# 时区配置
CELERY_TIMEZONE = 'Asia/Shanghai'

# 指定导入的任务模块,可以指定多个
CELERY_IMPORTS = (
   'scriptOperate.tasks'
)



CELERYBEAT_SCHEDULE = {
    'ali_script': {
        # 任务路径
        'task': 'scriptOperate.tasks.get_ali_script_status',
        # 每日七点执行
        # 'schedule': crontab(hour=7, minute=0),
        'schedule': timedelta(seconds=20)
        # 'schedule':5
    },
    'log_file': {
            # 任务路径
            'task': 'scriptOperate.tasks.produce_log',
            # 每日零点执行
            'schedule': crontab(hour=0, minute=0),   # 通过crontab进行定时
        },
    'weather_file':{
            'task': 'scriptOperate.tasks.get_weather_status',
            'schedule': crontab(hour=7, minute=0)
            # 'schedule': timedelta(seconds=20)
    },
    'power_file':{
            'task': 'scriptOperate.tasks.get_power_status',
            'schedule': crontab(hour=5, minute=30),
            # 'schedule': timedelta(seconds=20)
    },
    'overview':{
                'task': 'scriptOperate.tasks.get_overview_status',
                'schedule': crontab(hour=7, minute=10),
                # 'schedule': timedelta(seconds=30)
        }
}

settings.py同级目录下创建celery.py

import os
import django
from celery import Celery
from django.conf import settings
from celery.schedules import crontab
# 设置系统环境变量,安装django,必须设置,否则在启动celery时会报错
# celery_study 是当前项目名
os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'code_work2.settings')
# django.setup()

celery_app = Celery('scriptOperate')
celery_app.config_from_object('django.conf:settings')
celery_app.autodiscover_tasks(settings.INSTALLED_APPS)

在app下创建tasks.py

import logging
import json
import datetime
import time
import os.path
import re
import pysftp
from celery import shared_task
from log.log_files import Logger
from code_work2.celery import celery_app
from scriptOperate.task import ali_monitor, weather_monitor, power_monitor, over_view_monitor

# log = Logger('../log/files/data.log', level='debug')
# logger = log.logger


# @shared_task
@celery_app.task
def get_ali_script_status():
    ali_monitor.get_ali_status()

@celery_app.task
def get_weather_status():
    weather_monitor.get_weather_status()

@celery_app.task
def get_power_status():
    power_monitor.get_power_status()

@celery_app.task
def get_overview_status():
    over_view_monitor.get_overview_status()

@shared_task
def produce_log():
    Logger(logfile, level='debug')

 

启动任务

celery -A code_work2 beat -l info   启动beat
celery -A code_work2 worker -l info -P eventlet 启动celery

 

标签:status,task,get,schedule,django,celery,import,定时
From: https://www.cnblogs.com/sxy-blog/p/17393127.html

相关文章

  • ubuntu设置定时任务
    一.将ubuntu默认编辑器设置为vimubuntu默认的nano编辑器用不习惯,先将默认编辑器设置为vim有2种方式:1.在终端输入以下命令:sudoupdate-alternatives--configeditor#选择编号3*3/usr/bin/vim.basic30manualmode2.添加环境变量echo'expo......
  • django通过channels实现websocket
     WebSocket协议是基于TCP的一种新的协议。WebSocket最初在HTML5规范中被引用为TCP连接,作为基于TCP的套接字API的占位符。它实现了浏览器与服务器全双工(full-duplex)通信。其本质是保持TCP连接,在浏览器和服务端通过Socket进行通信。当客户端向服务端发送连接请求时,不仅连接还会......
  • Django音乐网站项目(1)
      今天开始,我们就用Django试着搭建一个音乐类的网站。首先,我们需要对项目进行设计,最好手绘画出草图。本节主要以项目架构设计、功能配置、数据架构表设计和定义模型类四点为主,为项目的开发做一些准备。一、项目架构设计  我们对音乐网站的需求与设计有了大概了解,下一步根据......
  • Linux crontab定时执行脚本
    一、创建shell脚本示例:查看a.txt文件是否存在#!/bin/shecho"查找2.txt文件是否存在?"if[-e/test/2.txt];thenecho$(date+%F%n%T)文件存在-yes>>/test/log.txtelseecho$(date+%F%n%T)文件不存在-no>>/test/log.txtfi执行脚本:[root@localhosttest]#chmo......
  • Oracle 定时任务job实际应用
    目录一、Oracle定时任务简介二、dbms_job涉及到的知识点三、初始化相关参数job_queue_processes四、实际创建一个定时任务(一分钟执行一次),实现定时一分钟往表中插入数据4.1创建需要定时插入数据的目标表4.2创建定时执行的存储过程4.3创建定时一分钟定时任务job4.5可以根据以下......
  • Django基础之-Auth
    目录补充:django_migrations表一Auth模块是什么二auth模块常用方法1.authenticate()2.login(HttpRequest,user)用户登录的案例3.is_authenticated()4.login_requierd登录成功后才能访问home页面案例:5.check_password(old_password)6.set_password(new_password)修改密码案例7.lo......
  • django中aggregate()和annotate()区别
    在Django中,aggregate()和annotate()是两个常用的聚合函数。它们都可以用来对一组查询结果进行聚合操作,但它们的作用是有所不同的。aggregate()是用于聚合整个查询集的结果,通常用于返回一个值,例如计算查询集中所有结果的数量、平均值、最大值或最小值等。使用aggregate()......
  • linux 设置定时任务
    这里我们定时清理缓存(AI训练经常导致缓存没有及时清理,后面的读写操作就很慢)书写启动文件sudovimcleanBuff.sh#!/bin/bashecho"开始清理缓存"#写入硬盘,防止数据丢失sync;sync;sync;#延迟10Ssleep10echo1>/proc/sys/vm/drop_cachesecho2>/proc/sys/vm/drop......
  • Django高级之-中间件
    目录一什么是中间件二中间件有什么用七个中间件中间件中的方法三自定义中间件process_request和process_responseprocess_viewprocess_exceptionprocess_template_response四中间件应用场景1、做IP访问频率限制2、URL访问过滤五CSRF_TOKEN跨站请求伪造背景信息form表单中如何......
  • Django笔记二十三之case、when操作条件表达式搜索、更新等操作
    本文首发于公众号:Hunter后端原文链接:Django笔记二十三之条件表达式搜索、更新等操作这一篇笔记将介绍条件表达式,就是如何在model的使用中根据不同的条件筛选数据返回。这个操作类似于数据库中ifelifelse的逻辑。以下是本篇笔记的目录:model和数据准备When和Case......