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中精确输出JSON浮点数的方法
Apr 18 Python
python图像处理之反色实现方法
May 30 Python
Python中函数参数设置及使用的学习笔记
May 03 Python
Python第三方库的安装方法总结
Jun 06 Python
Python实现动态图解析、合成与倒放
Jan 18 Python
Django使用AJAX调用自己写的API接口的方法
Mar 06 Python
wxpython实现按钮切换界面的方法
Nov 19 Python
Python实现在Windows平台修改文件属性
Mar 05 Python
Python的PIL库中getpixel方法的使用
Apr 09 Python
python3字符串输出常见面试题总结
Dec 01 Python
Python实现老照片修复之上色小技巧
Oct 16 Python
Python+Selenium实现读取网易邮箱验证码
Mar 13 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
PHP计划任务之关闭浏览器后仍然继续执行的函数
2010/07/22 PHP
php Smarty 字符比较代码
2011/02/27 PHP
PHP下通过exec获得计算机的唯一标识[CPU,网卡 MAC地址]
2011/06/09 PHP
PHP date函数常用时间处理方法
2015/05/11 PHP
PHP 使用 Imagick 裁切/生成缩略图/添加水印自动检测和处理 GIF
2016/02/19 PHP
php实现映射操作实例详解
2019/10/02 PHP
javascript中获取选中对象的类型
2007/04/02 Javascript
js创建对象的几种常用方式小结(推荐)
2010/10/24 Javascript
js封装的textarea操作方法集合(兼容很好)
2010/11/16 Javascript
JavaScript实现表格排序方法
2013/06/14 Javascript
JavaScript 七大技巧(二)
2015/12/13 Javascript
jQuery遍历DOM元素与节点方法详解
2016/04/14 Javascript
bootstrap jquery dataTable 异步ajax刷新表格数据的实现方法
2017/02/10 Javascript
JavaScript中正则表达式判断匹配规则及常用方法
2017/08/03 Javascript
JavaScript实现各种排序的代码详解
2017/08/28 Javascript
JS动态插入脚本和插入引用外部链接脚本的方法
2018/05/21 Javascript
微信小程序后台持续定位功能使用详解
2019/08/23 Javascript
JS如何寻找数组中心索引过程解析
2020/06/01 Javascript
js实现批量删除功能
2020/08/27 Javascript
js获取图片的base64编码并压缩
2020/12/05 Javascript
vue项目配置 webpack-obfuscator 进行代码加密混淆的实现
2021/02/26 Vue.js
python动态网页批量爬取
2016/02/14 Python
django轻松使用富文本编辑器CKEditor的方法
2017/03/30 Python
从CentOS安装完成到生成词云python的实例
2017/12/01 Python
关于 Python opencv 使用中的 ValueError: too many values to unpack
2019/06/28 Python
Windows上安装tensorflow  详细教程(图文详解)
2020/02/04 Python
Python如何使用bokeh包和geojson数据绘制地图
2020/03/21 Python
keras得到每层的系数方式
2020/06/15 Python
详解selenium + chromedriver 被反爬的解决方法
2020/10/28 Python
基于Django快速集成Echarts代码示例
2020/12/01 Python
韩国三大免税店之一:THE GRAND 中文免税店
2016/07/21 全球购物
美国一站式电动和手动工具商店:International Tool
2020/11/26 全球购物
办公室经理岗位职责
2014/01/01 职场文书
质量承诺书格式
2014/05/20 职场文书
英文版辞职信
2015/02/28 职场文书
巧用 -webkit-box-reflect 倒影实现各类动效(小结)
2021/04/22 HTML / CSS