Django实现celery定时任务过程解析


Posted in Python onApril 21, 2020

1.首先在项目同名目录下建一个celery.py

from __future__ import absolute_import
import os
from celery import Celery
from datetime import timedelta
from kombu import Queue

# set the default Django settings module for the 'celery' program.
os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'OpsManage.settings')

from django.conf import settings

app = Celery('OpsManage')

# Using a string here means the worker will not have to
# pickle the object when using Windows.
# 配置celery
class Config:
  BROKER_URL = 'amqp://guest:guest@localhost:5672//'
  CELERY_RESULT_BACKEND = 'redis://localhost:6379'
  CELERY_ACCEPT_CONTENT = ['application/json']
  CELERY_TASK_SERIALIZER = 'json'
  CELERY_RESULT_SERIALIZER = 'json'
  CELERY_TASK_RESULT_EXPIRES = 60 * 60
  CELERY_TIMEZONE = 'Asia/Shanghai'
  CELERY_ENABLE_UTC = True
  CELERY_ANNOTATIONS = {'*': {'rate_limit': '500/s'}}
  CELERYBEAT_SCHEDULER = 'djcelery.schedulers.DatabaseScheduler'

app.config_from_object(Config)
# 到各个APP里自动发现tasks.py文件
app.autodiscover_tasks()
#crontab config
app.conf.update(
  CELERYBEAT_SCHEDULE = {
    # 每隔30s执行一次函数
    'every-30-min-add': {
      'task': 'apps.tasks.celery_assets.push_host_by_salt_tasks',
      'schedule': timedelta(seconds=30)
      # # 每天凌晨12点
      # 'schedule': crontab(minute=0, hour=0)
    },
  },
)
# kombu : Celery 自带的用来收发消息的库, 提供了符合 Python 语言习惯的, 使用 AMQP 协议的高级接口
Queue('transient', routing_key='transient',delivery_mode=1)

2.在settings.py里配置celery

INSTALLED_APPS = [
  ......
  'django_celery_beat',
  'django_celery_results',
]

3.在项目同名目录下的__init__.py文件里申明celery任务,记得要去检测呀

# coding:utf-8
from __future__ import absolute_import, unicode_literals

# This will make sure the app is always imported when
# Django starts so that shared_task will use this app.
from celery import app as celery_app

__all__ = ['celery_app']

import pymysql
pymysql.install_as_MySQLdb()

4.在task.py里执行任务的函数上加@

from celery import task
# 定时任务
@task
def push_host_by_salt_tasks():
  “”“balabala”“”
  return '这里是定时任务'

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
python搭建虚拟环境的步骤详解
Sep 27 Python
Python 字典与字符串的互转实例
Jan 13 Python
Python 实现在文件中的每一行添加一个逗号
Apr 29 Python
对pandas中to_dict的用法详解
Jun 05 Python
python 读写文件,按行修改文件的方法
Jul 12 Python
python 读取文件并替换字段的实例
Jul 12 Python
对sklearn的使用之数据集的拆分与训练详解(python3.6)
Dec 14 Python
python常用函数与用法示例
Jul 02 Python
Jupyter notebook 远程配置及SSL加密教程
Apr 14 Python
python argparse模块通过后台传递参数实例
Apr 20 Python
python 利用jieba.analyse进行 关键词提取
Dec 17 Python
python 详解turtle画爱心代码
Feb 15 Python
使用PyQt5实现图片查看器的示例代码
Apr 21 #Python
快速解决jupyter notebook启动需要密码的问题
Apr 21 #Python
Python3.7将普通图片(png)转换为SVG图片格式(网站logo图标)动起来
Apr 21 #Python
Django基于客户端下载文件实现方法
Apr 21 #Python
Iconfont(矢量图标)+iconmoon(图标svg互转)配合javascript实现社交分享系统
Apr 21 #Python
Tensorflow安装问题: Could not find a version that satisfies the requirement tensorflow
Apr 20 #Python
jupyter notebook 的工作空间设置操作
Apr 20 #Python
You might like
获取用户Ip地址通用方法与常见安全隐患(HTTP_X_FORWARDED_FOR)
2013/06/01 PHP
解决ajax+php中文乱码的方法详解
2013/06/09 PHP
php绘制一个矩形的方法
2015/01/24 PHP
PHP匿名函数和use子句用法实例
2016/03/16 PHP
PHP中rename()函数的妙用讲解
2019/02/28 PHP
php常用字符串长度函数strlen()与mb_strlen()用法实例分析
2019/06/25 PHP
PHP下载文件函数与用法示例
2019/09/27 PHP
php+js实现点赞功能的示例详解
2020/08/07 PHP
javascript 支持ie和firefox杰奇翻页函数
2008/07/22 Javascript
JavaScript 全面解析各种浏览器网页中的JS 执行顺序
2009/02/17 Javascript
面向对象的Javascript之三(封装和信息隐藏)
2012/01/27 Javascript
使用Node.js配合Nginx实现高负载网络
2015/06/28 Javascript
js控件Kindeditor实现图片自动上传功能
2020/07/20 Javascript
利用Angularjs和Bootstrap前端开发案例实战
2016/08/27 Javascript
Bootstrap table使用方法汇总
2017/11/17 Javascript
微信小程序 SOTER 生物认证DEMO 指纹识别功能
2019/12/13 Javascript
使用原生javascript开发计算器实例代码
2021/02/21 Javascript
python 正则式使用心得
2009/05/07 Python
Python爬取网易云音乐热门评论
2017/03/31 Python
Django rest framework基本介绍与代码示例
2018/01/26 Python
django2.2 和 PyMySQL版本兼容问题
2020/02/17 Python
html5+css3气泡组件的实现
2014/11/21 HTML / CSS
意大利制造的西装、衬衫和针对男士量身定制的服装:Lanieri
2018/04/08 全球购物
Bravofly德国:预订廉价航班和酒店
2019/09/22 全球购物
课程设计心得体会
2013/12/28 职场文书
农村婚礼证婚词
2014/01/08 职场文书
大学学习生活感言
2014/01/18 职场文书
办公自动化专业大学生职业规划书
2014/03/06 职场文书
安踏广告词改编版
2014/03/21 职场文书
电子商务专业求职信
2014/07/10 职场文书
员工年终自我评价
2014/09/14 职场文书
向国旗敬礼活动总结
2014/09/27 职场文书
2015国庆节66周年演讲稿
2015/03/20 职场文书
学术研讨会主持词
2015/07/04 职场文书
Windows下载并安装MySQL8.0.x 版本的完整教程
2022/04/10 MySQL
Vue ECharts实现机舱座位选择展示功能
2022/05/15 Vue.js