django通过celery定时任务
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
django通过celery定时任务的更多相关文章
- Django与Celery配合实现定时任务
一.前言 Celery是一个基于python开发的分布式任务队列,而做python WEB开发最为流行的框架莫属Django,但是Django的请求处理过程都是同步的无法实现异步任务,若要实现异步任务 ...
- Django Celery定时任务和时间设置
1.Celery加入定时任务 Celery除了可以异步执行任务之外,还可以定时执行任务.在实例代码的基础上写个测试方法: #coding:utf- from celery.task.schedules ...
- Bamboo Django Celery定时任务和时间设置
1.Celery加入定时任务 Celery除了可以异步执行任务之外,还可以定时执行任务.在实例代码的基础上写个测试方法: 1 #coding:utf-8 2 from celery.task.sche ...
- Django中Celery的实现介绍(一)
Django中Celery的实现 Celery官网http://www.celeryproject.org/ 学习资料:http://docs.jinkan.org/docs/celery/ Cele ...
- Django使用Celery异步任务队列
1 Celery简介 Celery是异步任务队列,可以独立于主进程运行,在主进程退出后,也不影响队列中的任务执行. 任务执行异常退出,重新启动后,会继续执行队列中的其他任务,同时可以缓存停止期间接收 ...
- celery 定时任务时间篇
1.Celery加入定时任务 Celery除了可以异步执行任务之外,还可以定时执行任务.在实例代码的基础上写个测试方法: 1 #coding:utf-8 2 from celery.task.sche ...
- django和celery结合应用
django+celery项目结构 - project_name - app01 - __init__.py - admin.py - views.py - modes.py - tasks.py # ...
- Python中Celery 的基本用法以及Django 结合 Celery 的使用和实时监控进程
celery是什么 1 celery是一个简单,灵活且可靠的,处理大量消息的分布式系统 2 专注于实时处理的异步任务队列 3 同时也支持任务调度 执行流程 Celery 基本使用 tasks.py i ...
- 将celery定时任务设置为根据本地时区触发
默认celery的时区为UTC,如果要在django项目中将celery定时任务配置为根据本地时区触发,则需要修改 在setttings.py 添加以下任意一行: # celery 相关配置 CELE ...
- django中设置定时任务
django中设置定时任务 在django中设置定时任务我们可以借用django-crontab这个第三包来实现 django-crontab只能在linux系统下使用 安装: pip install ...
随机推荐
- 使用EasyCV Mask2Former轻松实现图像分割
简介: EasyCV可以轻松预测图像的分割谱以及训练定制化的分割模型.本文主要介绍如何使用EasyCV实现实例分割.全景分割和语义分割,及相关算法思想. 作者:贺弘 谦言 临在 导言 图像分割(Ima ...
- 为什么我要迁移 SpringBoot 到函数计算
简介: 面对流量洪峰,我们再也不会手忙脚乱了,函数计算自动会帮我们扩容!很好的解决了我们的 API 场景和不定时执行各种不同任务的场景. 作者:榴莲 为什么要迁移? 我们的业务有很多对外提供服务的 ...
- EventBridge消息路由|高效构建消息路由能力
简介:企业数字化转型过程中,天然会遇到消息路由,异地多活,协议适配,消息备份等场景.本篇主要通过 EventBridge 消息路由的应用场景和应用实验介绍,帮助大家了解如何通过 EventBridg ...
- 在 UOS 统信运行 dotnet 程序提示没有通过系统安全验证无法运行
本文记录 dotnet 应用程序在 UOS 统信系统上运行时,提示 没有通过系统安全验证,无法运行 的问题 这个问题是因为没有开启 UOS 统信的开发者模式,直接将自己构建完成的包放上去跑导致的问题 ...
- github 解决推拉代码提示 REMOTE HOST IDENTIFICATION HAS CHANGED 失败
本文记录最近 github 推送或拉取代码时提示 WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED! 而失败的解决方法 报错提示如下 @@@@@@@@@@ ...
- vue使用websoket(非封装)
上代码: create:function(){ this.initWebpack() } methods:{ initWebpack(){//初始化websocket let us ...
- 引爆你的网页乐趣!前端十个令人捧腹的JavaScript整蛊代码。
愚人节整蛊代码.想要在网页上增添一抹幽默与惊喜吗?或是想给你的朋友一个意想不到的"小惊喜"?那么,这十款简单而有趣的JavaScript前端整蛊代码绝对能满足你的需求!每一个代码都 ...
- 更新package.json里所有模块
安装该插件 cnpm install -g npm-check-updates 或者 npm install -g npm-check-updates 在有package.json的目录执行 npm- ...
- python教程3.3:字符和编码
1.二进制 计算机只能存储和识别二进制,但是人类常用的字母.数字.汉字怎么用计算机存储和识别呢? 人类强行约定一个对应表,把数字.字母和数字进行对应上,这样就可以用二进制表示字母和数字了. 2.ASC ...
- 日常Bug排查-连接突然全部关闭
日常Bug排查-连接突然全部关闭 前言 日常Bug排查系列都是一些简单Bug的排查.笔者将在这里介绍一些排查Bug的简单技巧,同时顺便积累素材. Bug现场 最近碰到一个问题,一台机器上的连接数在达到 ...