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 相关文章推荐
Win7上搭建Cocos2d-x 3.1.1开发环境
Jul 03 Python
对于Python的Django框架部署的一些建议
Apr 09 Python
Python的__builtin__模块中的一些要点知识
May 02 Python
node.js获取参数的常用方法(总结)
May 29 Python
CentOS7.3编译安装Python3.6.2的方法
Jan 22 Python
python实现日常记账本小程序
Mar 10 Python
python3基于OpenCV实现证件照背景替换
Jul 18 Python
使用Python控制摄像头拍照并发邮件
Apr 23 Python
对Python生成器、装饰器、递归的使用详解
Jul 19 Python
基于python实现的百度新歌榜、热歌榜下载器(附代码)
Aug 05 Python
使用OpenCV实现人脸图像卡通化的示例代码
Jan 15 Python
Flask使用SQLAlchemy实现持久化数据
Jul 16 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
《破坏领主》销量已超100万 未来将继续开发新内容
2020/03/08 其他游戏
php mysql数据库操作分页类
2008/06/04 PHP
PHP面向对象——访问修饰符介绍
2012/11/08 PHP
php提取字符串中网站url地址的方法
2014/12/03 PHP
PHP中preg_match函数正则匹配的字符串长度问题
2015/05/27 PHP
PHP动态地创建属性和方法, 对象的复制, 对象的比较,加载指定的文件,自动加载类文件,命名空间
2016/05/06 PHP
可以把编码转换成 gb2312编码lib.UTF8toGB2312.js
2007/08/21 Javascript
javascript 特性检测并非浏览器检测
2010/01/15 Javascript
jQuery 创建Dom元素
2010/05/07 Javascript
用js来解决ajax读取页面乱码
2010/11/28 Javascript
JS下拉框内容左右移动效果的具体实现
2013/07/10 Javascript
jquery特效 幻灯片效果示例代码
2013/07/16 Javascript
举例讲解JavaScript中将数组元素转换为字符串的方法
2015/10/25 Javascript
JavaScript获取各大浏览器信息图示
2015/11/20 Javascript
谈谈JavaScript类型系统之Math
2016/01/06 Javascript
jQuery 判断元素整理汇总
2017/02/28 Javascript
微信小程序 获取session_key和openid的实例
2017/08/17 Javascript
atom-design(Vue.js移动端组件库)手势组件使用教程
2019/05/16 Javascript
js实现登录拖拽窗口
2020/02/10 Javascript
Python的Flask框架中Flask-Admin库的简单入门指引
2015/04/07 Python
Python使用scrapy采集时伪装成HTTP/1.1的方法
2015/04/08 Python
详解Python with/as使用说明
2018/12/13 Python
Python中的 is 和 == 以及字符串驻留机制详解
2019/06/28 Python
Pytorch使用MNIST数据集实现CGAN和生成指定的数字方式
2020/01/10 Python
Python对称的二叉树多种思路实现方法
2020/02/28 Python
PyCharm 在Windows的有用快捷键详解
2020/04/07 Python
python中K-means算法基础知识点
2021/01/25 Python
Bed Bath & Beyond加拿大官网:购买床上用品、浴巾、厨房电器等
2019/10/04 全球购物
西安启天科技有限公司网络工程师面试题笔试题
2016/06/12 面试题
施工员岗位职责
2014/03/16 职场文书
校园元旦活动总结
2014/07/09 职场文书
婚庆公司计划书
2014/09/15 职场文书
教育项目合作协议书格式
2014/10/17 职场文书
民事起诉书范本
2015/05/19 职场文书
2016年记者节感言
2015/12/08 职场文书
OpenFeign实现远程调用
2022/08/14 Java/Android