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 相关文章推荐
Linux环境下MySQL-python安装过程分享
Feb 02 Python
Django中模版的子目录与include标签的使用方法
Jul 16 Python
Python 40行代码实现人脸识别功能
Apr 02 Python
python嵌套字典比较值与取值的实现示例
Nov 03 Python
django使用html模板减少代码代码解析
Dec 12 Python
利用pandas进行大文件计数处理的方法
Jul 25 Python
基于OpenCV python3实现证件照换背景的方法
Mar 22 Python
python字典的遍历3种方法详解
Aug 10 Python
python函数装饰器之带参数的函数和带参数的装饰器用法示例
Nov 06 Python
Django框架配置mysql数据库实现过程
Apr 22 Python
Python基于DB-API操作MySQL数据库过程解析
Apr 23 Python
如何在windows下安装Pycham2020软件(方法步骤详解)
May 03 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生成年月日下载列表的方法
2015/04/24 PHP
PHP实现即时输出、实时输出内容方法
2015/05/27 PHP
PHP删除数组中特定元素的两种方法
2019/02/28 PHP
浅谈laravel中的关联查询with的问题
2019/10/10 PHP
WordPress免插件实现面包屑导航的示例代码
2020/08/20 PHP
javascript 写类方式之七
2009/07/05 Javascript
通用javascript脚本函数库 方便开发
2009/10/13 Javascript
JS运行耗时操作的延时显示方法
2010/11/19 Javascript
使用jQuery实现dropdownlist的联动效果(sharepoint 2007)
2011/03/30 Javascript
js中的前绑定和后绑定详解
2013/08/01 Javascript
jQuery 中DOM 操作详解
2015/01/13 Javascript
详解javascript中原始数据类型Null和Undefined
2015/12/17 Javascript
浅谈Sticky组件的改进实现
2016/03/22 Javascript
jQuery过滤选择器经典应用
2016/08/18 Javascript
js实现功能比较全面的全选和多选
2017/03/02 Javascript
NodeJS、NPM安装配置步骤(windows版本) 以及环境变量详解
2017/05/13 NodeJs
解决vue 更改计算属性后select选中值不更改的问题
2018/03/02 Javascript
Vue不能检测到Object/Array更新的情况的解决
2018/06/26 Javascript
解决vue-cli3 使用子目录部署问题
2018/07/19 Javascript
vue定义全局变量和全局方法的方法示例
2018/08/01 Javascript
如何基于filter实现网站整体变灰功能
2020/04/17 Javascript
[03:07]【DOTA2亚洲邀请赛】我们,梦开始的地方
2017/03/07 DOTA
python删除文件示例分享
2014/01/28 Python
python实现马耳可夫链算法实例分析
2015/05/20 Python
PyQt4实现下拉菜单可供选择并打印出来
2018/04/20 Python
tensorflow如何批量读取图片
2019/08/29 Python
PYTHON实现SIGN签名的过程解析
2019/10/28 Python
python3中利用filter函数输出小于某个数的所有回文数实例
2019/11/24 Python
Django中Q查询及Q()对象 F查询及F()对象用法
2020/07/09 Python
HTML5之HTML元素扩展(上)—新增加的元素及使用概述
2013/01/31 HTML / CSS
用缩写的指针比较"if(p)" 检查空指针是否可靠?如果空指针的内部表达不是0会怎么样?
2014/01/05 面试题
《赠汪伦》教学反思
2014/04/12 职场文书
优秀护士演讲稿
2014/04/30 职场文书
2014年度安全生产目标管理责任书
2014/07/25 职场文书
个人务虚会发言材料
2014/10/20 职场文书
Redis特殊数据类型HyperLogLog基数统计算法讲解
2022/06/01 Redis